【ハスケル】

Haskell(ハスケル) とは?

💡 「副作用ゼロ」を突き詰めた数学者のような言語
📌 このページのポイント
純粋関数 vs 副作用のある関数 純粋関数(Haskell) 入力 A f(x) 純粋関数 出力 B 同じ入力 → 必ず同じ出力 外部に影響を与えない テスト・推論が容易 副作用のある関数 入力 A g(x) 副作用あり 出力 B? DB 同じ入力でも結果が変わりうる DB・ファイル・画面に影響 予測・テストが難しい
純粋関数型プログラミングの考え方(副作用の分離)
ひよこ ひよこ

Haskell って他のプログラミング言語と何が違うの?

ペンギン先生 ペンギン先生

一番大きな違いは「純粋」関数型言語だということだよ。普通のプログラミング言語では変数の値を書き換えたりファイルに書き込んだり自由にできるけど、Haskell では副作用(外部への影響)を厳密に分離して管理するんだ

ひよこ ひよこ

副作用がダメってこと?プログラムって画面に表示したりファイル保存したりするものじゃないの?

ペンギン先生 ペンギン先生

もちろんそういう処理もできるよ。ただし Haskell では「モナド」という仕組みを使って、副作用がある処理を型レベルで明示するんだ。IOモナドの中に書かれたコードだけが外部とやり取りできる、というルールだよ

ひよこ ひよこ

おもしろい!遅延評価ってどういうこと?

ペンギン先生 ペンギン先生

普通の言語は式を書いたらすぐに計算するけど、Haskell は「その値が本当に必要になるまで計算しない」んだ。例えば無限リストを定義しても、実際に使う分だけ計算されるからメモリが溢れないよ。必要な分だけ取り出す怠け者の戦略だね

ひよこ ひよこ

なんだか難しそう…実際に使われてるの?

ペンギン先生 ペンギン先生

学術研究はもちろん、金融業界でのリスク計算やコンパイラ開発、ブロックチェーン(Cardano は Haskell 製)など実務でも使われてるよ。Facebook のスパムフィルター「Sigma」も Haskell で書かれてるんだ

ひよこ ひよこ

Haskell を学ぶメリットって何だろう?

ペンギン先生 ペンギン先生

Haskell を学ぶとプログラミングの考え方そのものが変わるよ。「状態を持たない」「型で安全性を保証する」という発想は他の言語でも活きるんだ。実際、TypeScript型システムRust の所有権システムには Haskell からの影響が色濃く見られるんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Haskell」って出てきたら「副作用を排除した純粋関数型の代表格」と思えればだいたいOK!
📖 おまけ:英語の意味
「Haskell」 = 数学者ハスケル・カリーの名前から
💬 数理論理学者の Haskell Curry(ハスケル・カリー)にちなんで名付けられたよ。「カリー化」という関数型の概念もこの人の名前が由来なんだ
← 用語集にもどる