関数型言語
ナビゲーションに移動
検索に移動
関数型言語とは、関数型プログラミングを行うために特化した機能・仕様を持つプログラミング言語である。
概要[編集]
関数型プログラミングとは、関数を中心としたプログラミングによってプログラムを組むプログラミング手法である。関数型言語とは、それを可能にするための構文などの仕様を組み込んだプログラミング言語を指す。誤解を恐れずに言えば、数式[1]を組み合わせてプログラムを組むスタイルである。
よく知られている言語には、LISP系(Scheme系を含む)、ML系、Haskell、Clean、F#などがある。
関数型言語の関数は、手続き型言語などの関数に比べてより数学的な表現が可能である。
例えば、関数型言語における関数は第一級オブジェクトとして扱うことができるため、ラムダ計算などの計算モデルに親和性が高い。
特徴[編集]
関数型としての厳密さ(純粋さ)によって異なるが、基本的には状態遷移を必須としない。
これによって、状態を持つことで発生する副作用の問題[2]を避けることができる。
また、原則として制御文も持たない。IF文は条件演算子のような式で表す。ループは再帰を用いる。CASE文は、パターンマッチング[3]という手法を用いる。
状態遷移を排した言語は純粋関数型と呼ぶことがある。[4]
数学上の関数の連鎖には、理論上はその操作における時間の推移を扱う概念が無いため、状態遷移とは親和性が低い。
例えば、データ構造やI/O制御である。純粋関数型言語であるHaskellではモナドという概念を用いてこれを解決している。