[Haskell-cafe] Currying: The Rationale
Donald Bruce Stewart
dons at cse.unsw.edu.au
Tue May 22 22:40:42 EDT 2007
prstanley:
>
> >> Hi
> >> What is the rationale behind currying? is it for breaking subroutines
> >into
> >> pure one-to-one mappings?
> >
> >We don't have 'subroutines' as such, but otherwise yes. Also, it gives us
> >partial application - we don't have to apply all the parameters at once,
> >and we can do interesting and useful things by applying only some to get a
> >new function.
> >
> >> If f x y = f x -> a function which takes y for
> >> argument then does that mean that the second function already has
> >value x, as
> >> it were, built into it?
> >
> >Yep, though I can't make sense of what your syntax is supposed to mean.
> >I shouldn't take it too literally. It's just to illustrate the point
> >that f x returns another function with x already in it and y passed
> >as argument.
> Could you perhaps demonstrate how you can apply parts of curried
> functions in other functions in Haskell?
(^) applied to 2, produces a new function, we can map over a list:
Prelude> let sq = (^2)
Prelude> map sq [1..10]
[1,4,9,16,25,36,49,64,81,100]
or more explicitly:
Prelude> let x `to` y = x ^ y
Prelude> let sq x = x `to` 2
Prelude> map sq [1..10]
[1,4,9,16,25,36,49,64,81,100]
-- Don
More information about the Haskell-Cafe
mailing list