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

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

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

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

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

出典