Miranda
Mirandaは、遅延評価方式の純粋関数型プログラミング言語である。作者デビッド・ターナー(David Turner)による以前の言語SASLやKRCの後継でもあり、またMLやHopeの影響も受けている。イギリスのリサーチ・ソフトウェア社(Research Software Ltd.)が販売しており、同社の商標でもある。研究目的ではない商用を目指した最初の純粋関数型言語であった。
よくある例題を解くプログラムに関して言えば、Mirandaのコードは(APLなどを別とすれば)ほとんどの主流のプログラミング言語よりも簡単で短く表現でき、他の関数型言語と同様、信頼性の高いプログラムの開発が命令型言語に比べて短期間で可能になったという報告がある。
1985年に登場した。処理系の実装としてはUnix系向けのC言語で実装されたもののみがある。後発のHaskellは多くの面でMirandaの影響を受けている。
また、ある項がその1つ前の項の関数から得られる形式は以下のようになる。
これは、2のべき乗のリストである。これらの例から分かるように、Miranda では無限のリストを表現可能である。たとえばごく単純な無限のリストの例として、全ての正の整数のリスト [1..] がある。
さらに(これはHaskellには無い機能のため、Mirandaの特色と言えるが)、// という記号を使う diagonalising list comprehensions(対角化リスト内包表記)により、[1..] というような無限のリスト2つから、[(1, 1), (1, 2), (2, 1), (1, 3), (2, 2), (3, 1), ..] というようなそれらを合成したリストを作ることができる(普通の内包表記で普通に作ろうとすると、片方のリストを辿り続けてしまい、もう片方のリストを辿ることをしないため、うまくできない)。[(x, y) // x <- [1..]; y <- [1..]] というように書く。
関数への実引数の適用は sin x のように、単に関数に実引数を続ける。
Miranda は他の純粋関数型言語と同様、関数を引数として他の関数に渡したり、関数の結果として関数を返したり、データ構造に要素として関数を含むといったことが可能である。また、関数は全て1引数にカリー化されているものと見ることもでき、実引数の数が足りていない適用は部分適用となる(注意: しばしば混同されるが、「カリー化」と「部分適用」は違うものである)。