This page summarizes the features of the Programatica Haskell Toolkit, which is
See the Usage page for how to use the tools.
It should also be possible for Haskell programmers to reuse our Haskell front-end in their own Haskell programs, but at the moment there is very little documentation to support this, unfortunately. (But it has been used in HaRe -- the Haskell refactorer tool from the University of Kent.)
The tools support Haskell 98 as described in the Haskell 98 Language and Libraries: the Revised Report. It also supports a number of extensions to varying degree.
P | T | Feature |
---|---|---|
Y | Hierarchical module names (i.e. ". " in module names)
| |
Y | y | Haskell Hierachical Libraries |
y | Foreign Function Interface | |
Y | Y | Multi-parameter classes |
Y | Y | Overlapping instances (as in Hugs) |
Y | y | Functional dependencies (see Type Classes with Functional Dependencies) |
Y | n | Rank-n polymorphism
(use of the forall keywords in type expression)
|
Y | n | Existentially quantified types
(use of the forall keyword in data constructor specifications)
|
Y | Y | The horrible n+k patterns |
n | n | Pattern guards |
n | n | Infix type constructors |
n | n | Type signatures in patterns, scoped type variables |
y | n | Generalised derived instances for newtypes |
n | n | Generalised Algebraic Data Types |
n | n | mdo
|
property
keyword.
assert
keyword.
{-P:
... -}
.
The Programatica Haskell Tools are packaged with two sets of libraries:
The command pfesetup
sets up a project using the Haskell 98 libraries by default.
By supplying the flag +h
or hierarchical
a project
using the hierarchical libraries is created instead.
The tools currently don't implement exhaustive checking for static errors and might let things like duplicate definitions or repeated variables in patterns slip through silently. (Implementing this has been given low priority, since it has been assumed that the tools will be used as a complement to other Haskell compilers/interpreters, rather than a replacement.)