Difference between revisions of "Discus"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
Disciple is an explicitly lazy dialect of the functional programming language [http://www.haskell.org Haskell]. |
Disciple is an explicitly lazy dialect of the functional programming language [http://www.haskell.org Haskell]. |
||
− | + | == Disciple vs Haskell == |
|
* Strict [[DDC/EvaluationOrder|EvaluationOrder]] is the default, laziness is introduced explicitly. |
* Strict [[DDC/EvaluationOrder|EvaluationOrder]] is the default, laziness is introduced explicitly. |
||
− | * All data objects support DestructiveUpdate, without the need for Ref types. |
+ | * All data objects support [[DDC/DestructiveUpdate|DestructiveUpdate]], without the need for Ref types. |
− | * Type directed FieldProjections complement type classing. |
+ | * Type directed [[DDC/FieldProjections|FieldProjections]] complement type classing. |
− | * Supports a try-catch ExceptionMechanism |
+ | * Supports a try-catch [[DDC/ExceptionMechanism|ExceptionMechanism]] |
− | * The TypeSystem ensures that |
+ | * The [[DDC/TypeSystem|TypeSystem]] ensures that side effects and destructive update play nicely with laziness. |
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]. |
||
− | + | == The Disciplined Disciple Compiler (DDC) == |
|
* Uses a typed core language which includes effect, closure, region and mutability information. ([http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.dump-core-reconstruct.dc example]) |
* Uses a typed core language which includes effect, closure, region and mutability information. ([http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.dump-core-reconstruct.dc example]) |
||
* This extended type information is used to allow code-transformation style optimizations in the presence of side effects and mutable objects. |
* This extended type information is used to allow code-transformation style optimizations in the presence of side effects and mutable objects. |
||
Line 16: | Line 16: | ||
* Is in a usable alpha state. |
* Is in a usable alpha state. |
||
− | + | == Get the Source == |
|
Use [http://darcs.net darcs] to get the repo from [http://www.haskell.org haskell.org] |
Use [http://darcs.net darcs] to get the repo from [http://www.haskell.org haskell.org] |
||
darcs get http://code.haskell.org/~benl/disciple-HEAD |
darcs get http://code.haskell.org/~benl/disciple-HEAD |
||
Line 22: | Line 22: | ||
Check the ReleaseNotes and [http://code.haskell.org/~benl/disciple-HEAD/INSTALL INSTALL] instructions. |
Check the ReleaseNotes and [http://code.haskell.org/~benl/disciple-HEAD/INSTALL INSTALL] instructions. |
||
− | + | == Contact the Maintainers == |
|
* If you've tripped over a bug then please add it to the [http://code.google.com/p/disciple/issues Issues List]. |
* If you've tripped over a bug then please add it to the [http://code.google.com/p/disciple/issues Issues List]. |
||
* You can also post in http://groups.google.com/group/disciple-cafe |
* You can also post in http://groups.google.com/group/disciple-cafe |
Revision as of 11:49, 16 March 2008
Disciple is an explicitly lazy dialect of the functional programming language Haskell.
Disciple vs Haskell
- Strict EvaluationOrder is the default, laziness is introduced explicitly.
- All data objects support DestructiveUpdate, without the need for Ref types.
- Type directed FieldProjections complement type classing.
- Supports a try-catch ExceptionMechanism
- The TypeSystem ensures that side effects and destructive update play nicely with laziness.
Some example code, and it's output.
The Disciplined Disciple Compiler (DDC)
- 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.
- 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-HEAD
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