Posted to tcl by kbk at Tue Jul 28 21:00:57 GMT 2015view pretty

proc worker {a} {
    set i 0
    set b [yield]
    while {1} {
	set b [yield [expr {$a * [incr i] * $b}]]
    }
}
coroutine fred worker 2
puts [fred 3]
puts [fred 5]
puts [fred 5]