我开始学习prolog,并希望让整个切割更加清晰.我已经读到"绿色切割不会改变程序的声明性含义,而红切不会".但是,程序的意义并不是真正纯粹的声明(仅仅是因为prolog实际上是为所有选项回溯).
这是一个例子:
p(1).
p(2) :- !.
p(3).
Run Code Online (Sandbox Code Playgroud)
据说这是绿色切割.但如果我运行这个:
p(X), X =:= 3.
Run Code Online (Sandbox Code Playgroud)
我会在没有剪辑的情况下获得"真实",并且在剪切时获得"假".所以,我错过了什么?
提前致谢.