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.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners