Features of the Programatica Haskell Tools

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.)

Summary of functionality

Supported language

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. n+k patterns are not supported.

Unusually well-supported standard language features

Common Haskell Language extensions

P=lexing/parsing/scoping, T=type checking, +=implemented, -=not implemented yet, blank=n/a.
PTFeature
+ Hierarchical module names (i.e. "." in module names)
++ Multi-parameter classes
+- Functional dependencies (see Type Classes with Functional Dependencies)
+- Rank-n polymorphism (use of the forall keywords in type expression)
+- Existentially quantified types (use of the forall keyword in data constructor specifications.

Programatica specific language extensions

Limitations

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.)