Haskell と GHC

Haskell は純粋関数型・遅延評価の言語、GHC (Glasgow Haskell Compiler) がデファクト処理系で、対話環境が GHCi。型クラス・高カインド型・豊富な型機能を持つ。

言語機能

  • 型クラスと派生戦略 DerivingViaRankNTypes(高階多相)、Higher-kinded typesFunctor f 等)。
  • Lensvan Laarhoven 表現、Monad / Free Monad / Traversable などの抽象。

実行モデル

  • 遅延評価は共有式への参照を memo する thunk で実現し計算結果をキャッシュするが、λ本体(自由変数を持つ計算)の共有はできない。Core/STG を経てコンパイルされ、関数型ランタイムでは allocation と GC が重要。
  • 並列化(Data Parallel Haskell)もある。最適簡約で本体の共有まで行うhvm-runtimeとよく比較される(逐次 fold は同等、関数合成は HVM が指数的に有利な場合あり)。
  • 実装の古典は Simon Peyton Jones “The Implementation of Functional Programming Languages”。

関連