[Haskell-cafe] Re: Scheme in Haskell, Parsec Example, how to add scheme comments

Thomas Schilling nominolo at googlemail.com
Sun Nov 18 20:01:42 EST 2007


On Sun, 2007-11-18 at 19:37 -0500, Berlin Brown wrote:
> On Nov 18, 2007 7:32 PM, Berlin Brown <berlin.brown at gmail.com> wrote:
> > I am sure many of you have looked at the scheme in haskell example that
> > is on the web by Jonathan Tang. If you are familiar with the code, I
> > need a little help trying to add scheme style comments:
> >
> > "; This is my comment"

The preferred way to do that is to use a token helper function:

  token :: P a -> P a
  token p = do r <- p
	       whiteSpace
               return r

  -- or, if you add a Control.Applicative instance for your 
  -- parser type, this is just: token p = p <* whiteSpace

Then you handle comments as whitespace:

  whiteSpace :: P ()
  whiteSpace = skipMany $
        spaces 
    <|> (char ';' >> skipMany (satisfy (/='\n')))

Then you just use that like this:

  symbol :: P String
  symbol = token $ many1 $ satisfy $ not . (`elem` "()[]; ")

See also Parsec's TokenParser.



More information about the Haskell-Cafe mailing list