The Disciplined Disciple Compiler (DDC)

DDC is a research compiler used to investigate program transformation in the presence of computational effects. It compiles a family of strict functional core languages and supports region, effect and closure typing. This extra information provides a handle on the operational behaviour of code that isn't available in other languages. Programs can be written in either a pure/functional or effectful/imperative style, and one of our goals is to provide both styles coherently in the same language.

State of Play

DDC is at a stage where it will compile first order programs to executables, and parse and type-check higher order programs. Back-end support for higher functions isn't finished, and we don't have a garbage collector yet. See the Release Notes for a summary of what works.

Example code:

Current Release

The current release is DDC 0.4.1 (March 2014). Release Notes.

DDC consists of the following packages. To get them all just install ddc-tools, and the others will be installed as dependencies.

  • ddc-tools Command line tools. This is the user interface for the other packages.
  • ddc-core-tetra Core language fragment using computation types instead of latent effects.
  • ddc-core-eval Provides a single step evaluator (interpreter). It is a direct implementation of the operational semantics.
  • ddc-core-salt Intermediate representation for C like languages, and C code generator.
  • ddc-core Defines the abstract syntax, type checker, and substitution operators.
  • ddc-base Re-exports the main external dependencies of the Disciplined Disciple Compiler project.




GitHub page:

How to get help

How you can help

  • Download the compiler, do the tutorial, write programs.
  • File bug reports, fix tickets on the trac.
  • Complain if you can't work something out.

Further Reading

Last modified 9 days ago Last modified on Apr 20, 2016, 12:06:11 AM