CLP(R)は宣言型プログラミング言語です。これは「constraint logic programming (real)」の略で、実数は実数を指します。Prolog実装のスーパーセットまたはアドオンパッケージとして考えられ、一般的にはProlog実装の実装として実装されます。
ルールの例
同時線形方程式:
CLP(R)では次のように表されます。
3 * X + 4 * Y - 2 * Z = 8 、
X - 5 * Y + Z = 10、2 *
X + 3 * Y - Z = 20 。
典型的な実装の応答は次のようになります。
Z = 35.75
Y = 8.25
X = 15.5
はい
サンプルプログラム
CLP(R) では、再帰的な定義を用いて述語を定義することができます。例えば、住宅ローン関係は、元本 P、ローンの期間数 T、各期間の返済額 R、各期間の金利 I、そしてローン終了時の最終残高 B を関連付ける関係として定義できます。
mg ( P 、 T 、 R 、 I 、 B ) :- T = 0 、 B = P 。
mg ( P 、 T 、 R 、 I 、 B ) :- T >= 1 、 P1 = P * ( 1 + I ) - R 、 mg ( P1 、 T - 1 、 R 、 I 、 B ) 。
最初のルールは、期間がゼロのローンの場合、最終残高は当初の元本のみであることを示しています。2番目のルールは、少なくとも1期間のローンの場合、元本に1と金利を乗じ、そこから返済額を差し引くことで、新たな借入額P1を計算できることを示しています。ローンの残額は、新たな元本と期間が1つ短い別の住宅ローンとして扱われます。
これを使って何ができるでしょうか?色々な疑問が湧きます。例えば、1000ドルを10年間、年利10%で借りて、毎年150ドルを返済するとしたら、最終的にいくらの借金が残るでしょうか?
?- mg ( 1000 , 10 , 150 , 10 / 100 , B )。
システムは答えを返す
B = 203.129 .
10 年間の 10% のローンで毎年 150 ドルを返済し、最終的に借金がなくなる場合、いくら借りられるでしょうか?
?- mg ( P , 10 , 150 , 10 / 100 , 0 )。
システムは答えを返す
P = 921.685 .
10% の利子で 10 年間のローンを組んだ場合、元金、返済額、残高の関係はどのようなものですか?
?- mg ( P 、 10 、 R 、 10 / 100 、 B )。
システムは答えを返す
P = 0.3855 * B + 6.1446 * R .
これは、特定の値を取る必要はなく、変数間の関係を示します。
Prolog統合
CLP(R)は1994年に初めてPrologシステム、すなわちSICStus Prologに統合されました。[1]この実装はその後、 Ciao、[2]、 SWI-Prolog [3]、XSB [4]など、多くの一般的なPrologシステムに移植されています。
参照
参考文献
- ^ Holzbaur, Christian (1995). 「OEFAI clp(q,r) マニュアル改訂版 1.3.2」. ÖFAI技術レポートオンライン( 95–09 ). 2001年5月20日時点のオリジナルよりアーカイブ。
- ^ 「Ciaoシステムv1.22の紹介」ciao-lang.org . 2023年11月6日閲覧。
- ^ 「SWI-Prologマニュアル」www.swi-prolog.org . 2023年11月6日閲覧。
- ^ Swift, Theresa (2022年5月13日). 「制約パッケージ」. XSBシステム バージョン5.0 第2巻: インターフェースとパッケージ. p. 71.
- Joxan Jaffar, Spiro Michaylov, Peter J. Stuckey, Roland HC Yap: CLP(R)言語とシステム. ACM Transactions on Programming Languages and Systems 14(3): 339-395 (1992)
外部リンク
- CLP(R) の使い方 2008年9月14日 アーカイブ済み at the Wayback Machine
- CLP(R) プログラミングマニュアル 2005年11月3日アーカイブ - Wayback Machine