> Hi > (>>=) :: Parser a -> Parser b -> Parser b > p >>= f = \inp -> > case p inp of > [] -> [] > [(v, out)] -> parse (f v) out > based on a lot of guesswork, after the mess created by the OCR, I > managed to get the above example to work syntactically but is it > semantically correct? > Thanks, Paul
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). Shachaf _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe