compdata-0.6: Compositional Data Types

The compdata package

Based on Wouter Swierstra's Functional Pearl Data types a la carte (Journal of Functional Programming, 18(4):423-436, 2008, http://dx.doi.org/10.1017/S0956796808006758), this package provides a framework for defining recursive data types in a compositional manner. The fundamental idea of compositional data types (Workshop on Generic Programming, 83-94, 2011, http://dx.doi.org/10.1145/2036918.2036930) is to separate the signature of a data type from the fixed point construction that produces its recursive structure. By allowing to compose and decompose signatures, compositional data types enable to combine data types in a flexible way. The key point of Wouter Swierstra's original work is to define functions on compositional data types in a compositional manner as well by leveraging Haskell's type class machinery.

Building on that foundation, this library provides additional extensions and (run-time) optimisations which make compositional data types usable for practical implementations. In particular, it provides an excellent framework for manipulating and analysing abstract syntax trees in a type-safe manner. Thus, it is perfectly suited for programming language implementations, especially, in an environment consisting of a family of tightly interwoven domain-specific languages.

In concrete terms, this package provides the following features:

Examples of using (generalised) (parametric) compositional data types are bundled with the package in the libray examples.

Properties

Versions0.1, 0.2, 0.3, 0.4, 0.4.1, 0.5, 0.5.1, 0.5.2, 0.5.3, 0.6
Dependenciesbase (4.*), containers, deepseq, derive, mtl, QuickCheck (≥2), template-haskell, th-expand-syns, transformers
LicenseBSD3
AuthorPatrick Bahr, Tom Hvitved
Maintainerpaba@diku.dk
CategoryGenerics
Source repositoryhg clone https://bitbucket.org/paba/compdata
Executablesbenchmark
Upload dateThu May 3 13:22:19 UTC 2012
Uploaded byPatrickBahr
Built onghc-7.4

Modules

Downloads