[Haskell-cafe] Real World Haskell: confusion

wren ng thornton wren at freegeek.org
Tue Jan 13 21:03:19 EST 2009


Anton van Straaten wrote:
> Derek Elkins wrote:
> > * A related annoyance is people who talk about languages "supporting
> > currying and/or partial application."  Unless one means that the
> > language supports higher order functions at all by that, it doesn't make
> > any sense.  Haskell has no "support" for currying or partial
> > application.  The fact that most functions are in curried form in
> > Haskell is merely a convention (with, admittedly strong -social-
> > ramifications.)  The only way one could say Haskell "supports" currying
> > is that it has a lightweight notation for nested lambdas.
> 
> Compared to most other languages, that lightweight notation makes enough 
> of a difference that it's reasonable to say that Haskell "supports 
> currying and partial application".
> [...]
> Together, these two sugary treats make it quite a bit more convenient 
> and practical to use currying and partial application in Haskell (and 
> ML, etc.), and this translates to *much* more use in practice.

The lightweight syntax for definition and application helps 
tremendously. But another thing that helps a lot is that GHC is smart 
enough to make it efficient. OCaml also has fairly lightweight syntax 
compared to Java and Scheme, but the community is strongly focused on 
performance and they tend to get riled up about when and when-not to use 
it. Whereas Haskell nurtures a community that says "let the compiler do 
the ugly things", which is backed by excellent compiler writers. This 
perspective difference can also be seen in the let/letrec distinction vs 
letting the compiler figure it out.

-- 
Live well,
~wren


More information about the Haskell-Cafe mailing list