Posted to tcl by kbk at Sun Jul 13 02:56:20 GMT 2008view pretty
namespace path ::tcl::mathop proc lambda {arglist body} {list ::apply [list $arglist $body]} interp alias {} I {} return -level 0 proc U {f args} {{*}$f $f {*}$args} # recursive factorial puts [U [lambda {f x} { if {$x == 0} { I 1 } else { * $x [U $f [- $x 1]] } }] 6] # iterative factorial puts [U [lambda {f y x} { if {$x == 0} { I $y } else { # next line should be a tailcall U $f [* $y $x] [- $x 1] } }] 1 6]