many package:parsec

many p applies the parser p zero or more times. Returns a list of the returned values of p.
identifier  = do{ c  <- letter
; cs <- many (alphaNum <|> char '_')
; return (c:cs)
}
many1 p applies the parser p one or more times. Returns a list of the returned values of p.
word  = many1 letter
manyTill p end applies parser p zero or more times until parser end succeeds. Returns the list of values returned by p. This parser can be used to scan comments:
simpleComment   = do{ string "<!--"
; manyTill anyChar (try (string "-->"))
}
Note the overlapping parsers anyChar and string "-->", and therefore the use of the try combinator.
skipMany p applies the parser p zero or more times, skipping its result.
spaces  = skipMany space
skipMany1 p applies the parser p one or more times, skipping its result.