Difference between revisions of "Discus"

From HaskellWiki
Jump to navigation Jump to search
m (Benl23 moved page DDC to Discus: Project rename.)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
The Discus language is an experimental dialect of Haskell which investigates static typing and program transformation in the presence of computational effects. Discus includes region and effect typing, and this extra information provides a handle on the operational behaviour of code that isn't available in other languages.
[[Image:Ddc-alpha1-logo.png|DDC|center]]
 
   
  +
Programs can be written in either a pure/functional or effecful/imperative style, and one of our goals is to provide both styles coherently in the same language. The two styles can be mixed safely, for example: when using laziness the type system guarantees that computations with visible side effects are not suspended. Many Haskell programs are also Discus programs, or will run with minor changes.
Disciple is an explicitly lazy dialect of [http://www.haskell.org Haskell] which supports destructive update, computational effects, type directed field projections and allied functional goodness.
 
   
== Disciple vs Haskell ==
+
== More Information ==
  +
* Please see http://discus-lang.org for further information.
* Strict [[DDC/EvaluationOrder|EvaluationOrder]] is the default, laziness is introduced explicitly.
 
* Type directed [[DDC/FieldProjections|FieldProjections]] complement type classing.
 
* All data objects support [[DDC/DestructiveUpdate|DestructiveUpdate]].
 
* The [[DDC/EffectSystem|EffectSystem]] tracks what computational effects are being used in a program, without the need for state monads.
 
* The [[DDC/ClassSystem|ClassSystem]] ensures that effects and destructive update play nicely with laziness.
 
* [[DDC/ClosureTyping|ClosureTyping]] is used to track data sharing, and to preserve soundness in the presence of [[DDC/PolymorphicUpdate|PolymorphicUpdate]].
 
* Some [[DDC/FurtherReading|FurtherReading]].
 
 
Some example [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody-Main.ds code] showing most of the extensions, and its [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] and [http://cs.anu.edu.au/people/Ben.Lippmeier/project/disciple/src/NBody.ddc.c 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 [http://trac.haskell.org/ddc Development Wiki] for getting and building instructions.
 
* If you've tripped over a bug then please add a [http://trac.haskell.org/ddc/newticket 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
 

Latest revision as of 00:48, 24 February 2018

The Discus language is an experimental dialect of Haskell which investigates static typing and program transformation in the presence of computational effects. Discus includes region and effect typing, and this extra information provides a handle on the operational behaviour of code that isn't available in other languages.

Programs can be written in either a pure/functional or effecful/imperative style, and one of our goals is to provide both styles coherently in the same language. The two styles can be mixed safely, for example: when using laziness the type system guarantees that computations with visible side effects are not suspended. Many Haskell programs are also Discus programs, or will run with minor changes.

More Information