Prolog DCG在旧序言中使用lambdas编码事实?

Prolog DCG在旧序言中使用lambdas编码事实?,prolog,dcg,Prolog,Dcg,有规则: nx(X^dog(X)) --> [dog]. 在旧书中,对上述事实的查询是: ?- nx(X^R). 但现在我必须使用: ?- phrase(nx(X^F),R). F = dog(X), R = [dog]. 因为它被编码为: ?- listing(nx). nx(X^dog(X), [dog|A], A). 以前它是如何编码的,不需要用短语()来解包。在旧书中,它可能是nx(X^F,R,[])。没有任何其他编码。你指的是哪本书?NLP用于Prolog Pro和Pro

有规则:

nx(X^dog(X)) --> [dog].
在旧书中,对上述事实的查询是:

?- nx(X^R).
但现在我必须使用:

?- phrase(nx(X^F),R).
F = dog(X),
R = [dog].
因为它被编码为:

?- listing(nx).
nx(X^dog(X), [dog|A], A).

以前它是如何编码的,不需要用短语()来解包。

在旧书中,它可能是
nx(X^F,R,[])。
没有任何其他编码。你指的是哪本书?NLP用于Prolog Pro和Prolog用于NLP分析F.e。请参阅n():np(Sem)-->d((X^Res)^Sem),n(X^Res)。。。这是因为它在一个规则中吗?是的,在一个DCG规则中,您调用另一个规则时没有额外的参数和短语。只有在从非DCG代码调用DCG规则时,才使用额外的参数(旧样式)或短语(新样式)。但是您在哪里看到了
?-nx(X^R)。
??至少在Pereira&Shieber中不是这样。在旧书中可能是
nx(X^F,R,[])。
没有任何其他编码。你指的是哪本书?NLP用于Prolog Pro和Prolog用于NLP分析F.e。请参阅n():np(Sem)-->d((X^Res)^Sem),n(X^Res)。。。这是因为它在一个规则中吗?是的,在一个DCG规则中,您调用另一个规则时没有额外的参数和短语。只有在从非DCG代码调用DCG规则时,才使用额外的参数(旧样式)或短语(新样式)。但是您在哪里看到了
?-nx(X^R)。
??至少可以说,佩雷拉和希伯没有。