Posted to tcl by kbk at Sun Jul 13 19:30:16 GMT 2008view raw

  1. puts [U [lambda {foldl base op list} {
  2. if {[llength $list] == 0} {
  3. I $base
  4. } else {
  5. tailcall U $foldl \
  6. [{*}$op $base [lindex $list 0]] \
  7. $op \
  8. [lrange $list 1 end]
  9. }
  10. }] \
  11. {0 1} \
  12. [lambda {p q} {
  13. list [+ [lindex $p 0] $q] \
  14. [* [lindex $p 1] $q]}] \
  15. {1 2 3 4 5}]