プロローグと定詞の文法を理解しようとしていますが、両方を理解するのに非常に苦労しています。
私は本当にdcg構文の使用方法を理解しようとしています...
ここに2つの例があります:
1つ目は、実際にはこのフォーラムの別の質問からのコードですが、追加の質問があります:
コードは次のようになります。
s --> first, operator, second.
first --> [X].
operator --> ['+'].
second --> [X].
そして、プロローグがこれについて尋ねられると、それはtrue / falseを返しますが、これを実際に変更して値を「バインド」する方法を理解することはできません.s(X、[2、+、2] ,[]))。それは最初の値を返すので、true を返す代わりに X = 2 と言うでしょう。
とにかく、実際の質問に戻ります。通常のプロローグにはいくつかのルールがあり、これはその 1 つです。実際には何もしません。単に例として作成されたものです。
do(X, Y, [H|T], Sum):-
H == 1, %check if H is 1
X = H,
Y = T,
Additional is H+5,
Sum is Additional+Additional.
基本的に、DCG の基本的な構文を試して理解できるように、誰かがこれを DCG に翻訳できるかどうかを尋ねています! いくつかのチュートリアルを読んでみましたが、賢くなっていないように感じます...