A monadic parser has the type:

String -> [String,a]

where 'a' is the abstract syntax tree returned by the parser.

An error is indicated by an empty list.

Ambigous grammars can return multiple results.

### Parser Monad

We can introduce a functor which takes any type and turns it into a list of that type. | |

We can draw this as an endo-functor. |

#### Parser - Natural Transformations

The unit transform creates a single valued list | |

The natural way to create a mult transform is a transform which flatterns a list of lists into a flat list. |