我将尝试为您翻译以下技术相关内容,涉及Prolog和确定性子句语法。希望我的翻译能使您更好地理解以下内容:
当询问Prolog时,它会返回true/false,但我无法弄清楚如何实际修改它以"绑定"值,因此如果询问s(X,[2,+,2],[]),它将返回第一个值,所以它不会返回true,而是会说X = 2。
回到实际问题。我有一些常规Prolog规则,其中之一是这个;它实际上并没有做任何事情,只是作为一个例子编写的。
我正在努力理解Prolog和确定性子句语法,但我发现它们非常难理解。
我真的很想理解如何使用DCG语法...
下面有两个例子:
第一个实际上是来自本论坛的另一个问题的代码,但还有一个额外的问题:
代码如下:
s --> first, operator, second.
first --> [X].
operator --> ['+'].
second --> [X].
当询问Prolog时,它会返回true/false,但我无法弄清楚如何实际修改它以"绑定"值,因此如果询问s(X,[2,+,2],[]),它将返回第一个值,所以它不会返回true,而是会说X = 2。
回到实际问题。我有一些常规Prolog规则,其中之一是这个;它实际上并没有做任何事情,只是作为一个例子编写的。
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的基本语法!我尝试阅读了一些教程,但感觉并没有更聪明...