monadic parser combinator http://www.cs.nott.ac.uk/~gmh/monparsing.pdf