[Haskell-beginners] questions about "Write yourself a Scheme in 48 hours"

Mike Meyer mwm at mired.org
Sat Apr 9 04:35:26 CEST 2011

On Fri, 8 Apr 2011 18:45:26 -0700
Michael Litchard <michael at schmong.org> wrote:

Wow. I get to answer a question. Or at least try...

> I'm working through "Write yourself a Scheme in 48 hours". I'm on the
> parsing section
> http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours/Parsing
> and I have a question about the following function
> parseNumber :: Parser LispVal
> parseNumber = liftM (Number . read) $ many1 digit
> digit looks like a variable, but I don't see it mentioned anywhere.

It's from the Parsec library. It parses a single digit from the input.

> Where is the input coming from?

To be determined. parseNumber is a Parser monad that returns a LispVal
(at least, that's what the type says it is). You run it with the parse
function, which is where you specify the input to be parsed.

> Is this an example of partial application?

No. All the functions have all their arguments supplied. Demonstrating
that is left as an exercise.

I started with WYAS, but wanting to actually do the exercises meant
that starting with Parsec (what looks like a particularly difficult to
understand example of one of the more difficult parts of haskell) was
a bad idea. I switched to Real World Haskell
(http://book.realworldhaskell.org/read/), which covers just enough
monads to let you do some IO before getting into the rest of the
language. It also covers monads in general before getting into the
Parsec library. Not that there's anything wrong WYAS (and I plan to
get back to it), but RWH fit my needs better. You might give it a

Mike Meyer <mwm at mired.org>		http://www.mired.org/consulting.html
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

More information about the Beginners mailing list