Posted to tcl by kbk at Sun Jul 13 19:30:16 GMT 2008view pretty
puts [U [lambda {foldl base op list} { if {[llength $list] == 0} { I $base } else { tailcall U $foldl \ [{*}$op $base [lindex $list 0]] \ $op \ [lrange $list 1 end] } }] \ {0 1} \ [lambda {p q} { list [+ [lindex $p 0] $q] \ [* [lindex $p 1] $q]}] \ {1 2 3 4 5}]