
18 Mar
2017
18 Mar
'17
5:47 p.m.
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?