?
Combinators and type-driven transformers in Objective Caml
We describe an implementation of LDTA 2011 Tool Challenge tasks in Objective Caml language. Instead of using some dedicated domain-specific tools we utilize typical functional programming machinery such as polymorphic functions, monads and combinators; in addition we extensively use an idiom of type-driven transformers, which can be considered as a form of datatype-generic programming. Our implementation provides a good example of utilization of Objective Caml specific features such as open and implicitly defined types. As a result we provide a highly modular implementation built up of separately compiled components combined in a type-safe manner.