[Haskell-cafe] Real World Haskell: confusion

Derek Elkins derek.a.elkins at gmail.com
Tue Jan 13 22:54:30 EST 2009


On Wed, 2009-01-14 at 12:39 +1300, George Pollard wrote:
> On Tue, 2009-01-13 at 11:46 -0600, Derek Elkins wrote:
> > No, it means exactly what you said it means.  People abuse it to mean
> > the second sense.  Those people are wrong and there is already a term
> > for that second sense, namely "partial application."  I really wish
> > people would stop conflating these terms*, all it does is create
> > confusion.
> > 
> > To Eugene: The suggested meaning of "curriable", namely "able to be
> > curried," does not make sense.  curry takes an uncurried function to a
> > curried form.
> > 
> > * 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.
> 
> I’d almost say that there is no such thing as partial application in
> Haskell. Since every:
> 
> > f ∷ a → b → c
> 
> is really:
> 
> > f ∷ a → (b → c)
> 
> there are no multiple arguments to be applied ‘partially’, only a
> function ‘f’ that takes one argument and gives you another, anonymous,
> function.

Dan Piponi linked an LtU thread where I discussed exactly this issue.  A
slighly more direct link:
http://lambda-the-ultimate.org/node/2266#comment-33620

In Haskell there is arguably a slight semantic difference, but, yes,
there's not a big difference between application and partial application
(in Haskell.)



More information about the Haskell-Cafe mailing list