Curry

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

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

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

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

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

 出典