a monadic parser combinator library