通过类似宏的元编程创建Prolog谓词

时间:2019-02-19 21:36:47

标签: prolog metaprogramming swi-prolog

我需要一种工作方式:

?- create_pred(f, [A, B], (write(That), write(B), write(A), write(This))).
true.
?- f(this, a, b).
_L154bathis
true.

到目前为止,我没有This就可以使用它:

?- create_pred(f, [A, B], (write(That), write(B), write(A))).
true.
?- f(a, b).
_L154ba
true.

该代码如下:

create_pred(Name, Args, Body) :-
    length(Args, Argc),
    functor(F, Name, Argc),
    term_variables(F, Vars),
    term_variables(Args, Vars),
    assertz((F :- Body)).

有什么主意如何让第一变量与正文中的This(而不是That)变量统一?

0 个答案:

没有答案