Haskell と GHC
Haskell は純粋関数型・遅延評価の言語、GHC (Glasgow Haskell Compiler) がデファクト処理系で、対話環境が GHCi。型クラス・高カインド型・豊富な型機能を持つ。
言語機能
- 型クラスと派生戦略 DerivingVia、RankNTypes(高階多相)、Higher-kinded types(
Functor f等)。 - Lens の van 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”。
関連
- 型理論はtype-theory-lambda-cube、推論はhindley-milner-inference、効果はdelimited-continuations-effects。
- 証明系 Agda/Idris は Haskell 風(proof-assistants)。
- _moc-prog-lang