Version 25 (modified by benl, 7 years ago) (diff)



DDC compiles two related languages.

  • The Disciple Source Language is what the user normally sees. It has type inference, type classes, field projections, and lots of pattern matching sugar to make the programs fun to write. The semantics of the source language is defined by giving a translation to the core language.
  • The Disciple Core Language is what all of the optimisations are performed on. It is explicitly typed, and has a clean, well defined semantics. The user can write core programs explicitly, but there's more typing involved. 2011/12 -- this is the new core language, that is replacing the old one.

Both these languages are called "Disciple" because they are so strongly related. In future we may merge the two, so that one can write explicit type abstractions in the source program.

For discussion of the motivations of Disciple and DDC, please see the first chapter of: Type Inference and Optimisation for an Impure World

Possible improvements to the language are discussed in The Pony Farm

Gentle introduction to Disciple Source

The main differences from Haskell are:

  • Strict EvaluationOrder is the default, but laziness can be introduced explicitly.
  • 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.