Language extensions in nhc98

What language extensions does nhc98 support?

Extensions of the Haskell'98 language available in nhc98 include:

  • The standard primitive FFI language addendum.
  • Extended module namespaces, of the form Long.Hierarchical.Module.Name.
  • Local forall quantification on datatypes. (Also known as existential types, not to be confused with rank-2 types.)
  • Pattern guards (new in 1.20).
  • Some common standard hierarchical libraries packages. Use the compiler option e.g. -package base to access them.
  • The NHC.IOExtras library, containing IORefs, IOArrays, trace, unsafePerformIO, etc.
  • Andy Gill's Observe.lhs library, used for HOOD debugging.
  • A Binary data representation library. In summary, this library module provides bit-stream operations and a new Binary class for which the compiler fully supports "deriving" clauses. Fuller details can be found in [1] and in this documentation.


[1] The Bits Between The Lambdas - Binary Data in a Lazy Functional Language, Malcolm Wallace and Colin Runciman, Proceedings of the International Symposium on Memory Management, Vancouver, Oct 1998. [FTP site]

The latest updates to these pages are available on the WWW from

23rd November 2007
York Functional Programming Group