( Corountines A task is responsible for its own state See: example/coroutine.cf for example ) :max-tasks ^10 ; :tasks ^cells ~max-tasks variables ^+ ; :running? (n - f) ^tasks @ ; :yield (n - ) ^R> swap tasks ! ; :resume (n -) ^ dup running? 'drop ^if-not; tasks dup @ >R 0 swap ! ; :await ^0 0 :loop (f n - ) ^dup running? rot or swap dup resume 1+ dup max-tasks < 'loop ^if* drop 'await ^if ;