Is (^2) really considered currying? As I understand it, this is syntactic sugar for a "section", and might confuse the issue a bit, since it's distinct from ((^) 2). In this case we would have something like
Prelude> let pow2 = ((^) 2) Prelude> map pow2 [1..10] [2,4,8,16,32,64,128,256,512,1024] I think it's also worth pointing out that currying can make point-free programming more natural. So, foldl has type Prelude> :t foldl foldl :: (a -> b -> a) -> a -> [b] -> a That this could have been defined as foldlUncurried :: ((a -> b -> a), a, [b]) -> a but then simple point-free definitions like sum = foldl (+) 0 would have to be written as sum xs = foldlUncurried ((+), 0, xs) OTOH, sometimes an uncurried version is easier to reason about. So, in some of Richard Bird's work ("Algebra of Programming" is like this, and probably at least some of his intro book) examples are uncurried, as it shows more of the algebraic structure, and allows reasoning in a product space rather than an exponential. Umm, I guess that qualifies as jargon - sorry. Chad
(^) 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
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe