The Grampa project consists of three related Haskell libraries:
rank2classesis at the lowest level. It provides a set of type classes that mirrorFunctorand related type classes but for records.grammatical-parsersis a parser combinator and grammar combinator library that depends onrank2classes.deep-transformationsdepends on and extendsrank2classesto operate on trees of mutually-recusive types. This library is independent of grammatical-parsers, but can be used to manipulate the parse trees produced by it.