A technical summary of Hugs 1.4
Hugs 1.4 provides an almost complete implementation of
Haskell 1.4 [1], including:
- Lazy evaluation, higher order functions, and pattern
matching.
- A wide range of built-in types, from characters
to bignums, and lists to functions, with comprehensive
facilities for defining new datatypes and type synonyms.
- An advanced polymorphic type system with type and
constructor class overloading.
- All of the features of the Haskell 1.4 expression
and pattern syntax including lambda, case, conditional and
let expressions, list comprehensions, do-notation, operator
sections, and wildcard, irrefutable and 'as' patterns.
- An implementation of the main Haskell 1.4 primitives
for monadic I/O, with support for simple
interactive programs, access to text files, handle-based I/O,
and exception handling.
- An almost complete implementation of the Haskell module
system. The primary omission is that mutually recursive modules are
not yet supported.
Hugs is implemented as an interpreter that provides:
- A relatively small, portable system that can be used
on a range of different machines, from home computers, to
Unix workstations.
- A read-eval-print loop for displaying the value of
each expression that is entered into the interpreter.
- Fast loading, type checking, and compilation of
Haskell programs, with facilities for automatic loading of
imported modules.
- Integration with an external editor, chosen by
the user, to allow for rapid development, and for location
of errors.
- Modest browsing facilities that can be used to
find information about the operations and types that are
available.
Hugs is a successor to Gofer --- an experimental
functional programming system that was first released in
September 1991 --- and users of Gofer will see much that is
familiar in Hugs. However, Hugs offers much greater
compatibility with the Haskell standard; indeed, the
name Hugs was originally chosen as a mnemonic for
the "Haskell users' Gofer system.''
There have been many modifications and enhancements to Hugs
since its first release on Valentines day, February 14, in 1995.
Some of the most obvious improvements include:
- Full support for new Haskell 1.3 and 1.4 features, including
the labelled field syntax, do-notation, newtype, strictness
annotations in datatypes, the Eval class, ISO character
set, etc.
- Support for Haskell modules, and a growing collection of
library modules, that includes facilities for X window and Win32
programming.
- User interface enhancements, particularly
the import chasing and search pathfeatures, which were motivated by a greater emphasis on the role of
libraries in Haskell 1.4.
- Small improvements in runtime performance, and more
reliable space usage, thanks to the use of non-conservative
garbage collection during program execution.
- A graphical user interface for the Hugs systems that runs on
the Windows operating system.
There have also been a number of other enhancements, and fixes for bugs in
previous releases, some more serious than others.