A grapheme cluster is a user-perceived character
pub type Char = String
Represents a list of tokens that can be consumed by a parser
pub type Input(i) = List(i)
pub fn get(input: List(a)) -> Option(#(a, List(a)))
Get the head and tail of an input