On Wed, May 27, 2009 at 1:59 PM, Daniel Carrera < daniel.carr...@theingots.org> wrote: > Wow... That's a foldl! In a functional language, that would be called a > fold.
In Haskell it may be called fold (well, foldl and foldr), but the concept has has a variety of names. Two of the more common ones are "reduce" and "inject"; I believe Perl6 chose "reduce" for consistency with the Perl5 List::Util module. Common Lisp and Python also call it "reduce": (defun ! (n) (reduce #'* (loop for i from 1 to n collecting i))) def fact(n): return reduce(lambda x,y: x*y, range(1,n+1)) While Ruby calls it "inject". def fact(n) (1..n).inject { |x,y| x*y } end Perl 6 has a lot of functional features. IMO the nice thing about its version of reduce is the way it's incorporated into the syntax as a metaoperator. -- Mark J. Reed <markjr...@gmail.com>