Haskell
純粋関数型プログラミング言語。ラムダ計算をベースに、参照透過性(同じ入力に対して常に同じ出力、副作用なし)・不変性・遅延評価(non-strict semantics)を特徴とする、多相的で静的型付けの言語。1990年代に学術コミュニティの標準化プロジェクトとして生まれ、現在は Haskell Foundation が中心となってエコシステムを整備している。言語名は論理学者ハスケル・カリー(Haskell Curry)に由来する。
言語の特徴
- 純粋性 — 関数は副作用を持たず、IO・状態変更などの「作用」はモナド(
IOモナド、Stateモナドなど)で明示的に型として表現される。 - 遅延評価 — 式は必要になるまで評価されない。無限リストなどが自然に書ける一方、空間リーク(サンクの蓄積によるメモリ肥大化)はハマりどころとしてよく挙げられる。
- 強い静的型付け + 型推論 — Hindley-Milner型推論をベースに、明示的な型注釈なしでも多くのコードが型付けされる。型クラス(
Monad,Functor,Applicativeなど)による多相性がコアの抽象化機構で、実装は辞書渡し方式(ジェネリクス実装戦略の一つ)。 - 代数的データ型とパターンマッチ —
data宣言でデータ構造を定義し、パターンマッチで分解する。
処理系・ツールチェイン
- GHC (Glasgow Haskell Compiler) — 事実上唯一の主要実装。ネイティブコード生成のほかLLVMバックエンドも選択可能で、x86/AArch64/PowerPC/s390x/RISC-V/WASMをサポート。現行の安定版系列は9.6系で、GHC 9.14が2026年前半のリリースに向けてリリース候補段階にある。
- Cabal / Stack — パッケージ管理・ビルドツール。Hackageがパッケージリポジトリ、Stackageが動作確認済みパッケージセットのキュレーション。
- GHCi — 対話的REPL。
実用面
Webアプリ、CLIツール、コンパイラ・言語処理系など「正しさ」が重視される領域で採用例がある。分散VCSのDarcsもHaskellで実装されている。Haskell FoundationはSerokellと提携し、Haskell習熟度を標準化する認定プログラムも開始している。
#haskell #functional-programming