[Haskell-cafe] Currying: The Rationale

Nicolas Frisby nicolas.frisby at gmail.com
Wed May 23 13:07:31 EDT 2007


Disclaimer: I've not read the standard.

Sections are de-sugared depending on which argument you supply:

(x^) ==> (^) x
(^x) ==> flip (^) x

I think this is why they are considered special cases.

Prelude> map (^2) [1..10]
[1,4,9,16,25,36,49,64,81,100]
Prelude> map (flip (^) 2) [1..10]
[1,4,9,16,25,36,49,64,81,100]
Prelude> map (2^) [1..10]
[2,4,8,16,32,64,128,256,512,1024]
Prelude> map ((^) 2) [1..10]
[2,4,8,16,32,64,128,256,512,1024]

On 5/23/07, Chad Scherrer <chad.scherrer at gmail.com> wrote:
> On 5/23/07, Philippa Cowderoy <flippa at flippac.org> wrote:
> > On Wed, 23 May 2007, Chad Scherrer wrote:
> >
> > > 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).
> >
> > Sure, but it's (flip (^)) 2.
>
> Well, ok, but you've changed the definition. If it were enough for it
> to be equivalent to a curried version, we could as well write
>
> sq x = times (x,x) where times (x,y) = x * y
>
> and argue that this is partial application of a curried function
> because it's equivalent to the curried version you gave. But I guess
> I'm being a bit pedantic here, and I suspect your definition is
> exactly how (^2) is desugared.
>
> Chad
>
> >
> > --
> > flippa at flippac.org
> >
> > Sometimes you gotta fight fire with fire. Most
> > of the time you just get burnt worse though.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list