Glasgow Haskell Compiler
GHC自体はHaskellによって書かれているが、プログラムの実行に必要なランタイムシステムは、C言語とC--によって書かれている。
字句解析・パーサ・型システムが組み込まれているGHCのフロントエンドは、型推論が完了するまで可能な限りソースコードに関する情報を保存し、ユーザーに明確なエラーメッセージを提供することを目標に設計されている。型検査が完了した後、Coreとして知られている非糖衣構文の型付きの中間言語に変換される。最近のCoreは一般化代数的データ型(英語版)に対応するように拡張され、System FCとして知られているSystem Fの拡張に基づいている。
型指向コンパイルの伝統では、GHCのコンパイラ最適化が実行される単純化 (ミドルエンド) の段階は、一連のCoreのコードのトランスコンパイルによって構成されている。
プログラマは抽象構文木の形でHaskellのコードを生成する式を書くことができる。これらの式はコンパイル時に型検査が行われる。生成されたコードはプログラマによって直接書かれたように見える。定義に反映するための能力と共に、更なる言語拡張のための強力なツールを提供する。
擬似引用(英語版)を利用することで、ユーザーは式とパターンのための新しい具体的な構文を定義することができる。この機能は、Haskellで書かれたメタプログラムが、Haskell以外で書かれたコードを操作する場合に便利である。
ジェネリック型クラスは、操作する型の代数的構造だけで関数を指定する。
複数のコアを利用した式の並列評価。この機能では明示的にスレッドを指定する必要はない。プログラマが提供する注釈に基づいて、暗黙的に作業の分散が行われる。
インライン展開などの最適化を指示するコンパイラプラグマと、特定型のための特殊関数。
変更可能な項書き換え。プログラマはある1つの式を、等価なより効率的に評価された式に置き換える方法を記述するルールを提供することができる。この機能は、アプリケーションレベルのコード全体で、データ構造ライブラリの中心部を効率化するために利用されている。