Discus
Jump to navigation
Jump to search
Disciple is an explicitly lazy dialect of Haskell which supports destructive update, computational effects, type directed field projections and allied functional goodness.
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 track data sharing, and to preserve soundness in the presence of PolymorphicUpdate.
- Some FurtherReading.
Some example code showing most of the extensions, and its output, core and C-code
The Disciplined Disciple Compiler
- Uses a typed core language which includes effect, closure, region and mutability information.
- This extended type information is used to allow code-transformation style optimizations in the presence of side effects and mutable objects.
- Compiles via standard C99, so is highly portable.
- Tested under linux-{x86, x86_64} and darwin-{x86, x86_64} (tested on 10.5.4)
- Is in a usable alpha state.
Get the Source
Get the latest stable release (alpha 1.1) with darcs:
darcs get http://code.haskell.org/ddc/ddc-alpha
For thrill-seekers, the development branch (which usually builds ok) is:
darcs get http://code.haskell.org/ddc/ddc-head
Alternatively, download the source tar-ball from Google code
http://code.google.com/p/disciple/downloads
Check the ReleaseNotes and INSTALL and HACKING instructions.
Contact the Maintainers
- If you've tripped over a bug then please add it to the Issues List.
- You can also post in http://groups.google.com/group/disciple-cafe
- Or send mail to Ben.Lippmeier (wibble) anu.edu.au