概要
Haskellは純粋な関数型言語である。この言語は、C言語など他の言語にはない性質をもっている。
名前は論理学者のハスケル・カリー (Haskell B. Curry) にちなむ。
参照透過性
関数型言語では参照透過性(いつどこであっても同じ引数に対し同じ値を返す、数学の関数のような性質)を重視する。そのため、副作用(参照透過性を崩すような何か)を極力排除しようとする。しかし、デバイスに対する入出力も行えないのでは実用的でない。Haskell では「モナド」という概念を使って参照透過性を崩さず副作用を実現しているが、詳細は割愛する。
参照透過性を確保し、副作用を隔離することで、プログラムの見通しが良くなることが期待される。
遅延評価
関数型言語では変数の値が途中で変わらないため(例えば数学のテキストでは、a = 2 と置いた後、同じ文脈で途中から a = 3 と置き直したりはしない)、先に計算しようと、必要になってから計算しようと、得られる答えは同じである。この性質に着目し、実際に式の値が必要になってから計算を始めるのが遅延評価である。Haskell では、標準で遅延評価を行う。逆に、他のほとんどの言語のように関数呼び出しの際予め引数をすべて計算してしまう方法を先行評価と呼ぶ。