2
verb_phrase(X,P)--> trans_verb(X,X+1,P1), noun_phrase(X+1,P1,P).
對於上面的代碼,如果X = 1,我會得到怎麼做算術運算DCG在序言
(...1+1...).
「...」 表示不重要的代碼。 但我真的想得到2而不是1 + 1。 有人能告訴我該怎麼做嗎?
verb_phrase(X,P)--> trans_verb(X,X+1,P1), noun_phrase(X+1,P1,P).
對於上面的代碼,如果X = 1,我會得到怎麼做算術運算DCG在序言
(...1+1...).
「...」 表示不重要的代碼。 但我真的想得到2而不是1 + 1。 有人能告訴我該怎麼做嗎?
如果您對整數進行推理,最簡潔的方法是使用CLP(FD)約束進行算術運算。
您可以在DCG中使用{}/1
來嵌入Prolog目標。例如:
:- use_module(library(clpfd)).
verb_phrase(X0, P)--> { X #= X0 + 1 }, trans_verb(X0, X, P1), noun_phrase(X, P1, P).
是不是沒有'X#> 0'丟失? – false