many repeatedly applies an Applicative computation until it fails, collecting successful results in a list. It represents zero or more occurrences: an immediate failure produces an empty list instead of failing. section 12.1.4
Collect repeated parser matches
With a parser for the string "A", many collects every successful match: runParser (many $ string "A") "AAA" produces ["A","A","A"], while an empty input produces []. Use some instead when at least one match is required. section 12.1.4
