Difference between revisions of "Discus"
Jump to navigation
Jump to search
Line 12: | Line 12: | ||
* Some [[DDC/FurtherReading|FutherReading]]. |
* Some [[DDC/FurtherReading|FutherReading]]. |
||
− | Some example [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody-Main.ds code], and it's [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/nbody.png output] |
+ | Some example [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody-Main.ds code], and it's [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/nbody.png output], |
− | [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.dump-core-reconstruct.dc core] |
+ | [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.dump-core-reconstruct.dc core] and [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.ddc.c C-code] |
== The Disciplined Disciple Compiler == |
== The Disciplined Disciple Compiler == |
Revision as of 04:04, 20 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.
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 FutherReading.
Some example code, and it's 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.
- Compiles cleanly on linux-x86 and darwin-x86 (tested on Mac OS X 10.5.2)
- Is in a usable alpha state.
Get the Source
Use darcs to get the repo from haskell.org
darcs get http://code.haskell.org/~benl/disciple-alpha1
Alternatively, download the source tar-ball from Google code
http://code.google.com/p/disciple/downloads
Check the ReleaseNotes and INSTALL 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@anu.edu.au