【发布时间】:2016-02-10 11:14:15
【问题描述】:
假设我正在研究这个玩具示例(问题的重点显然不是解决这个示例):
p([]).
p([H|T]) :- H = 0, call_predicate(p,T).
call_predicate(Name,Arg) :- call(Name,Arg).
到目前为止一切顺利。现在假设我想在不需要谓词名称的地方添加谓词 call_predicate/1:
call_predicate(Arg) :- Name = ??, call(Name,Arg).
这样我就可以在p:call_predicate(T) 中使用,隐含地知道我要调用同名谓词。
那么问题是如何从call_predicate/1 中检索名称p,知道它是谓词的名称,称为call_predicate/1?
一个类似的问题是,如果它比第一个更容易,我如何才能在执行过程中检索我所在的当前谓词的名称?
【问题讨论】:
标签: reflection prolog swi-prolog