[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.
More information about the Haskell-Cafe