Posted to tcl by kbk at Fri Jul 18 20:49:44 GMT 2008view pretty

coroutine adder {n} {
    set sum $n
    while {1} {
	incr sum [lindex [yield $sum] 0]
    }
}
puts [adder 1]; # prints 1
puts [adder 2]; # prints 3
puts [adder 3]; # prints 6