UMinho Haskell Software -- Libraries & Tools

The UMinho Haskell Software is a repository of software, written in the functional programming language Haskell, that is being developed in the context of various research and educational projects. The objective is to enable use and reuse of software accross project boundaries. In particular, software developed in the context of the Research.PURe Project, is collected into the UMS repository.

The UMS repository is roughly partitioned into two parts:

  • Libraries: a hierarchical library of reusable modules.
  • Tools: a collection of tools.

The libraries offer reusable functionality. Each tool bundles part of the library functionality behind an interactive or command-line interface.

If you want to contribute, please consult UsingCVS.

The UMinho Haskell Libraries

The UMinho Haskell Libraries are located in the libraries subdirectory. The modules included in the libraries cover a wide range of functionality, for instance:

  • Data.Relation: Representation and operations on relations. A special case of relations are graphs. The operations include graph chopping and slicing, strong connected component analysis, graphs metrics, and more.
  • Language.Gnumeric: Support for analysis and manipulation of spreadsheets.
  • Language.Java: Support for analysis and manipulation of Java programs.
  • Pointless: Support for pointfree programming.
  • Camila: Support for VDM like concepts, such as data type invariants, pre- and post-conditions, and more.

For a complete overview, see the online API documentation for version 1.0, generated with Haddock. In the distribution, the API documentation can be found in the subdirectory libraries/documentation.

The libraries subdirectory contains a Makefile that allows you to easily do various things, among which:

make ghc compile all library modules with GHC
make ghci load all library modules into GHCi
make haddock generate library documentation with Haddock
make dist generate a distribution of the library
make hunit run HUnit on all test modules
make quickCheck run quickCheck on all library modules
make ghood generate GHood applets

If you want to operate on just a part of the library, you can do that by overriding the Makefile's top variable, for instance as follows:

  make top=Data/Relation ghci
And likewise for any other target. Consult the Makefile for other variables that can be overridden.

The UMinho Haskell Tools

Several tools are included in the UMS distributions, among which:

DrHylo Derives hylomorphisms from restricted Haskell syntax.
ChopaChops Graph slicing and chopping.
HaGLR Generalized LR parsing.
SdfMetz An SDF monitoring tool
Camila Prototype Camila interpreter

Further tools are under development, and will be included in future releases, such as:

VooDooM Transforms VDM datatypes to a relational representation.


Stable releases

Version Date Download Docs Includes
1.0 April 5, 2005 zip html Libraries & Camila, ChopaChops, DrHylo, HaGLR, HaLex, SdfMetz


Version Download Docs Includes:
2004.26.11 zip n/a Libraries, VooDooM, DrHylo, HaGLR, ChopaChops
2004.08.11 zip html Libraries, VooDooM, DrHylo, HaGLR, ChopaChops
2004.06.22 zip html Libraries, VooDooM, DrHylo
2004.03.09 zip html Libraries, VooDooM, DrHylo


For any questions about the UMinho Haskell Libraries and Tools, please contact:

Online demos

Demo Description
HaLex Lexing
HaGLR Generalized LR parsing
ChopaChops Viewing and chopping Java package graphs
HaskellGraphs Viewing and chopping Haskell module and function graphs
FCA Formal Concept Analysis
Type inference Type reconstruction from variable usage

Other software

  • MatchO: support for matching objects in Java. Includes library and generator.
  • INblobs: An editor and interpreter for Interaction Nets - a formalism for functional programming.