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 <fa-ml@ariis.it> 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