home


C言語に代表される手続き型言語では、変数の値すなわち状態を更新しながら逐次的に手続きが実行されていきます。 それに対して純粋関数型言語では変数が存在せず、全ての関数が副作用を持ちません。 この結果遅延評価との相性が良いという特徴があります。 遅延評価を用いることで、関数間の呼出関係と実際の計算が行われるタイミングを分離することが可能となります。 副作用を必然的に伴う入出力についてはモナドを利用する方法が提案されており、プログラムの純粋性を保ちつつ入出力を行うことが可能となっています。 純粋関数型言語の例としては Haskell や Concurrent Clean などが挙げられます.

関数プログラミングに関するリンク集