From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/examples/co.frt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 amforth-6.5/examples/co.frt (limited to 'amforth-6.5/examples/co.frt') diff --git a/amforth-6.5/examples/co.frt b/amforth-6.5/examples/co.frt new file mode 100644 index 0000000..0351ff9 --- /dev/null +++ b/amforth-6.5/examples/co.frt @@ -0,0 +1,36 @@ +\ coroutines + +: co r> r> swap >r >r ; + +: tokyo + ." Here Tokyo over" cr co + ." What gives? over" cr co + ." Yes, more? over" cr co + ." over and out" cr +; + +: amsterdam + tokyo + ." here Amsterdam over" cr co + ." has it arrived over" cr co + ." no. over and out" cr +; + +\ amsterdam + +\ generate a list of numbers, one by one +: producer ( n -- n' n' ) begin 1+ dup co again ; +: consumer + \ setup producer + 0 producer \ returns with a new number + \ now starts a ping-pong via co calls + \ every call to co *here* will give a new number + \ which has to be consumed. + begin dup . 10 < while co repeat + \ stop producer and clean up data + r> drop drop +; +\ output: +\ > consumer +\ 0 1 2 3 4 5 6 7 8 9 10 ok +\ > -- cgit v1.2.3