Chapter 1. Introduction

In September 1991, Mark Jones released a functional programming system called Gofer, which provided a compact, portable implementation of a Haskell-like language. The system also included experimental type system extensions, many of which later became part of Haskell. On Valentine's Day 1995, Mark released Hugs (Haskell User's Gofer System), a derivative of Gofer with greater Haskell compliance. Hugs versions are named after the version of Haskell they support; Hugs 98 was released in January 1999. Mark gave up the maintainership of Hugs in January 2000.

Hugs 98 still aims to be a fairly lightweight, portable implementation, and now adheres closely to Haskell 98. It also supports several extensions shared with other Haskell implementations:

Though these features make Hugs highly compatible with other implementations, it is primarily intended as interpreter and programming environment for developing Haskell programs. If your application involves large programs or speed is critical, you may strike Hugs's limitations, and may wish to try a Haskell compiler.

1.1. Other sources of information

1.1.1. Other documentation

The Hugs 98 User Manual

This was the definitive reference for earlier versions of Hugs, though parts of it are now out-of-date. Much of it remains relevant, particularly Section 7 on Hugs extensions, and it should be consulted in several areas that this Guide does not cover well. The manual is available in several formats: HTML, PDF, gzipped Postscript, gzipped tar-ed html, dvi, WinHelp(zipped) and HTMLHelp(win32 help format).

Haskell 98 Language and Libraries: the Revised Report

The definitive reference for the Haskell 98 language and standard libraries, published by Cambridge University Press, and also available online.

Haskell Hierarchical Libraries

A collection of libraries shared by Haskell implementations, including Hugs.

comp.lang.functional FAQ

General information about functional programming.

More information about Haskell may be found on the Haskell home page and the Hugs home page.

1.1.2. Mailing lists

There are a number of mailing lists where people discuss Hugs and Haskell, all with archives of past postings:


This is the place for general discussion about using Hugs.


Use this list for reporting bugs. This is more likely to be effective than direct mail to the authors or maintainers of Hugs. We do read this mailing list – but so do many other people, who might be able to give you more appropriate or timely advice than us! Before reporting a bug, check the list of known deviations from Haskell 98 (see Section 5.1).


Discussion of the development of Hugs takes place on this list. This list also receives commit messages from the Hugs CVS repository.


An informal list for chatting about Haskell. This is an ideal place for beginners to get help with Haskell, but Hugs-specific questions would be better directed at the Hugs lists.


A lower-volume list for more technical discussion of Haskell. Please do not post beginner questions or Hugs-specific questions to this list.

There are several other Haskell-related mailing lists served by See for the full list.

Some Haskell-related discussion also takes place in the Usenet newsgroup comp.lang.functional.