<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Francesco,</div><font size="5" class="">:)</font><div class=""><br class=""></div><div class="">Yes! That really did help.</div><div class="">Will post later when I’ve tidied what I’ve done  but it seems correct.</div><div class=""><br class=""></div><div class="">Thank you.</div><div class="">M</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 18 Mar 2017, at 21:47, Francesco Ariis <<a href="mailto:fa-ml@ariis.it" class="">fa-ml@ariis.it</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On Sat, Mar 18, 2017 at 09:11:20PM +0000, mike h wrote:<br class=""><blockquote type="cite" class="">Hi,<br class=""><br class="">Below is code I’m building up  for simple monadic and applicative parsers<br class="">from first principles.<br class=""></blockquote><br class="">Hello Mike,<br class="">    You might want to check `manyTill` from Parsec to get an idea:<br class=""><br class="">    manyTill :: (Stream s m t) => ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]<br class="">    manyTill p end      = scan<br class="">        where<br class="">              scan  = do { end; return [] } <|><br class="">                      do { x <- p; xs <- scan; return (x:xs) }<br class=""><br class=""><br class="">The 'trick' lies in <|> (alternative). Does that help?<br class="">_______________________________________________<br class="">Beginners mailing list<br class=""><a href="mailto:Beginners@haskell.org" class="">Beginners@haskell.org</a><br class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners<br class=""></div></div></blockquote></div><br class=""></div></body></html>