未定义的程序:(=)/ 4

Luk*_*hen 1 prolog dcg

我想比较SWI-Prolog中的两个术语:

np(np(DetBaum,NBaum),Morph1)->det(DetBaum,Morph1),n(NBaum,Morph2),Morph1=Morph2. 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

ERROR: Undefined procedure: (=)/4  
ERROR:   However, there are definitions for:  
ERROR:         (=)/2
Run Code Online (Sandbox Code Playgroud)

我认为Morph1和Morph2是两个术语,而不是四个.我错了吗?

mat*_*mat 5

除了保罗所说的,我想提一下,(=)/2在这里使用是没有必要的.毕竟,如果术语相同,那么您可以简单地使用相同的变量来表示它们.

所以,你的整个规则可以写成:

np(np(DetBaum,NBaum), Morph) -->
        det(DetBaum, Morph),
        n(NBaum, Morph).