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 on linux-{x86, x86_64} and darwin-{x86, x86_64} (tested on 10.5.4)
- Is an active research project and is not yet "industrial strength", but will compile some programs if you're nice to it.
Development
- See the Development Wiki for getting and building instructions.
- If you've tripped over a bug then please add a New Ticket.
- You can also post in http://groups.google.com/group/disciple-cafe.
- Or ask in #disciplined on irc.freenode.net
- Or send mail to Ben.Lippmeier (wibble) anu.edu.au