将Prolog变量绑定到谓词的名称

将Prolog变量绑定到谓词的名称,prolog,Prolog,假设我声明了谓词a和c,如下所示: a(b). c(D, E) :- D(E). 我想相信c(a,b)成功了,因为d(E)匹配a(b),如果d绑定到a,E绑定到b,但是(无论如何在SWI-Prolog中)语法检查是在c的定义中寻找一个遵循d的操作符,所以很明显,有一条规则,统一只将变量绑定到参数,而不是函子。问c提出的问题有什么诀窍吗?在这个问题中,谓词的标识是一个未知数。你可以利用 使用给定的名称和参数调用谓词。因此,您的c/2谓词等价于call/2: c(D, E) :- cal

假设我声明了谓词
a
c
,如下所示:

a(b).

c(D, E) :- D(E).
我想相信
c(a,b)
成功了,因为
d(E)
匹配
a(b)
,如果
d
绑定到
a
E
绑定到
b
,但是(无论如何在SWI-Prolog中)语法检查是在
c
的定义中寻找一个遵循
d
的操作符,所以很明显,有一条规则,统一只将变量绑定到参数,而不是函子。问
c
提出的问题有什么诀窍吗?在这个问题中,谓词的标识是一个未知数。

你可以利用 使用给定的名称和参数调用谓词。因此,您的
c/2
谓词等价于
call/2

c(D, E) :-
    call(D, E).
c(D,E):-
呼叫(D,E)。