Posted to tcl by kbk at Fri Jun 12 20:20:55 GMT 2009view raw
- namespace path ::tcl::mathop
- proc fib {n {c {{x} {set x}}}} {
- while {$n >= 2} {
- set c [list [list x [list n $n] [list c $c]] {
- tailcall fib [- $n 2] [list [list y [list x $x] [list c $c]] {
- tailcall apply $c [+ $x $y]
- }]
- }]
- incr n -1
- }
- tailcall apply $c $n
- }
- for {set i 0} {$i <= 10} {incr i} {
- puts [fib $i]
- }