Automata Theory

Implementing some concepts from automata theory in Haskell. If you rewrite the list comprehension notation in the do notation it encapsulates the nondeterminism quite well.