
Hi Francesco, :) Yes! That really did help. Will post later when I’ve tidied what I’ve done but it seems correct. Thank you. M
On 18 Mar 2017, at 21:47, Francesco Ariis
wrote: On Sat, Mar 18, 2017 at 09:11:20PM +0000, mike h wrote:
Hi,
Below is code I’m building up for simple monadic and applicative parsers from first principles.
Hello Mike, You might want to check `manyTill` from Parsec to get an idea:
manyTill :: (Stream s m t) => ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a] manyTill p end = scan where scan = do { end; return [] } <|> do { x <- p; xs <- scan; return (x:xs) }
The 'trick' lies in <|> (alternative). Does that help? _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners