Posted to tcl by miguel at Tue Aug 12 21:34:27 GMT 2008view pretty
% set lambda {{start 1} {stop 4}} { # init set i $start set imax $stop yield starting while {$i < $imax} { set stop [yield [expr {$i*$stop}]] incr i } puts exiting! return [expr {$i*$stop}] } % coroutine foo ::apply $lambda starting % foo 2 4 % foo 11 22 % foo 5 15 % foo 1 exiting! 4 % foo 1 invalid command name "foo"