Curry
Curry（カリー）は関数型プログラミングと論理プログラミングを一体にする目的で開発されたユニバーサルなプログラミング言語である。

特徴
 演算原則「レジドゥエーション」と「ナローイング」を実現する。

 純粋な宣言型言語
強い型付けに拠る言語であるが関数アノテーションの記述は必須ではない

 非決定的な演算を行える
同一の入力に対して異なる値を返すことができる

 フリーな変数
は未知の値を表わすが、それらはインスタンスを生成されるので評価可能である。

出典