【ハスケル】
Haskell(ハスケル) とは?
最終更新:
💡 純粋な計算と入出力を、型で区別する言語
純粋関数型のプログラミング言語。静的な型、型推論、遅延評価、IOによる入出力の区別が特徴です。副作用やエラーがすべてなくなるという意味ではありません。
📌 このページのポイント
Haskellは、何が特徴の言語?
画面表示や、ファイル保存はできない?
型推論なら、間違いは全部防げる?
型を書かなくても、処理から型を推論できる場合がある。型に合わない値の組み合わせ等は見つけられるけれど、意図と違う計算や、実行中の失敗まで全部防ぐわけではない。読みやすさのために型を明示することもあるんだ。
遅延評価は、どういうこと?
必要になるまで計算を進めない考え方だよ。たとえば、1から続く数のリストから先頭三つだけ取り出すなら、使う部分を求められる。無限に続くリストを全部計算してから取り出す必要はないんだ。
もっと詳しく知りたい人へ
IOとモナドは、同じ意味?
IOは入出力のアクションを区別する型です。モナドは処理を組み合わせる構造で、IO以外にも使います。モナドと書いてあれば、すべて外部への副作用があるという意味ではありません。
純粋な関数なら、必ず答えが返る?
無限に計算が続く式や、評価した時にエラーになる式もあります。純粋であることは、どんな入力でも終了して正常な値を返すことの保証ではありません。
まとめ:ざっくりこれだけ覚えればOK!
「Haskell」って出てきたら「純粋な計算と入出力を区別し、型を活かして書く関数型の言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Haskell」 = 論理学者Haskell B. Curryにちなむ名前
💬 Haskell 2010 Reportの序文で、Haskell B. Curryにちなんだ名前と説明されています。