From (Peyton Jones, 2000, sec. 1.6):
type Parser a = [Token] -> [(a, [Token])]
- Output being a list encodes the possibility of no parse (empty), unique parse (singleton), or ambiguous parse (multiple)
- This is assuming the grammar is ambiguous
- Output being a list encodes the possibility of no parse (empty), unique parse (singleton), or ambiguous parse (multiple)
Peyton Jones, S. L. (2000). Implementing Functional Languages: A Tutorial.