polymorphic recursion for parser combinators