On Wed, May 27, 2009 at 1:59 PM, Daniel Carrera <
[email protected]> 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 <[email protected]>