
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