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
Peyton Jones, S. L. (2000). Implementing Functional Languages: A Tutorial.