代码之家  ›  专栏  ›  技术社区  ›  Daniel Jour

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

  •  0
  • Daniel Jour  · 技术社区  · 5 年前

    我需要一种方法来实现这一点:

    ?- 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)).
    

    你知道我怎样才能把第一个论点和 (而不是 That )来自身体的变量?

    0 回复  |  直到 5 年前