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

#### References

[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 `http://www.haskell.org/nhc98/`

23rd November 2007
York Functional Programming Group