Glasgow Haskell Compiler
表現力豊かな静的型付けは、Haskellの主な特徴の1つである。それ故に、言語拡張の作業の多くは型と型クラスに向けたものになっている。
GHCはSystem FCに基づいた拡張型システムに対応している。主な型システムの拡張は以下の通りである。
任意ランクと非可述的多相性。本質的には、多相関数またはデータ型コンストラクタは、引数の1つが多相であることを必要とする場合がある。
一般化代数的データ型。多相データ型の各コンストラクタは、結果の型に情報をエンコードすることができる。この型でパターンマッチを行う関数は、コンストラクタごとの型情報に基づいて、データに対してより具体的な操作を行うことができる。
存在型は、一部のデータとそのデータの操作を束ねて、基礎となるデータのデータ型を隠蔽して操作することができる。このような値は、オブジェクト指向プログラミングのオブジェクトと非常に似たものである。
値を含まないデータ型。この機能は型レベルのメタプログラミングでデータを表現するときに便利である。
型族(英語版)は、型から型へのユーザー定義関数である。パラメータ多相は各型のインスタンス化に同じ構造を提供するが、型族はインスタンス間で異なる実装によりアドホック多相を提供する。