OK, I get the reference to currying now.  A function of 2 variables can be seen as a function of one that returns another function of one.  So a function of one variable can be seen as a function of no variables that returns a function of one.  Very nice.

----- Original Message ----
From: Tim Chevalier <catamorphism@gmail.com>
To: Gregory Propf <gregorypropf@yahoo.com>
Cc: haskell-cafe@haskell.org
Sent: Monday, July 2, 2007 5:37:41 PM
Subject: Re: [Haskell-cafe] Very simple parser

On 7/2/07, Gregory Propf <gregorypropf@yahoo.com> wrote:
>
>
>
> This was a bit baffling too.  It appears that there's an implied argument to runTick.  This also works and makes it more explicit.  I suppose the compiler just works out that the only place to put the 'n' is after tick.
>
> runTick :: Int -> (String,Int)
> runTick n = runState tick n
>

Not exactly. Look up "currying". (Writing out the same definition with
the argument "n" specified explicitly like you did is called
"eta-expansion", by the way.)

Cheers,
Tim

--
Tim Chevalier* catamorphism.org *Often in error, never in doubt
"My writing is all completely autobiographical. That's why I write
lesbian vampire stories." -- Jewelle Gomez



Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.