Personal tools


From HaskellWiki

(Difference between revisions)
Jump to: navigation, search

Revision as of 04:02, 19 March 2008


Disciple is an explicitly lazy dialect of Haskell which supports destructive update, computational effects, type directed field projections and some other useful things.


1 Disciple vs Haskell

  • Strict EvaluationOrder is the default, laziness is introduced explicitly.
  • Type directed FieldProjections complement type classing.
  • All data objects support DestructiveUpdate.
  • The EffectSystem tracks what computational effects are being used in a program, without the need for state monads.
  • The ClassSystem ensures that effects and destructive update play nicely with laziness.
  • ClosureTyping is used to preserve soundness in the presence of polymorphic update.

Some example code, and it's output.

2 The Disciplined Disciple Compiler

  • Uses a typed core language which includes effect, closure, region and mutability information. (example)
  • This extended type information is used to allow code-transformation style optimizations in the presence of side effects and mutable objects.
  • Produces standard C99, so is highly portable.
  • Compiles cleanly on linux-x86 and darwin-x86 (tested on Mac OS X 10.5.2)
  • Is in a usable alpha state.

3 Get the Source

Use darcs to get the repo from

   darcs get

Alternatively, download the source tar-ball from Google code

Check the ReleaseNotes and INSTALL instructions.

4 Contact the Maintainers