[Haskell-beginners] Very basic question on monads

blackcat at pro-ns.net blackcat at pro-ns.net
Wed Feb 23 06:30:18 CET 2011

I'm working through the "Write Yourself a Scheme" wikibook and having 
trouble with one of the exercises.  For the function parseNumber :: 
Parser LispVal, both

parseNumber = liftM (Number . read) $ many1 digit
parseNumber' = do digits <- many1 digit
                  return $ (Number . read) digits

work.  But

parseNumber'' = many1 digit >>= liftM read >>= liftM Number

complains "couldn't match expected type Char against inferred type 
[Char]".  Is liftM engaging the list monad?  How do I fix this?

More information about the Beginners mailing list