>       PRS: (>>=) :: Parser a -> Parser b -> Parser b
> p >>= f = \inp ->
>    case p inp of
>      [] -> []
>      [(v, out)] -> parse (f v) out

You probably want:

(>>=) :: Parser a -> (a -> Parser b) -> Parser b
p >>= f = \inp -> case parse p inp of
                    [] -> []
                    [(v,out)] -> parse (f v) out

Assuming that you're following Graham Hutton's book.

Note that this definition won't actually compile; you probably need a
Monad instance and a newtype to get this to work properly (see
http://www.cs.nott.ac.uk/~gmh/Parsing.lhs for a working version of the
same code).
PRS: That explains it then. [(v, out)] -> parse (f v) out caused a type mismatch. Cheers, Paul
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to