像这样的东西:
increment(X, X2 is X + 1).
有什么办法吗?
最佳答案
no.
好吧,除非有
increment/3
的包装谓词这将执行操作,然后调用真正的 increment/3
被认为是有效的。编辑:假设您想为
foo(Arg1, Arg2, Arg3)
编写一个包装器这样您就可以将表达式作为第二个参数传递。包装器将是:efoo(Arg1, Expr, Arg3):-
Arg2 is Expr,
foo(Arg1, Arg2, Arg3)
如果你想做很多事情,你可能想要抽象这种行为:
eval_call(Predicate, Expressions):-
maplist(evaluate, Expression, Args),
call(Predicate,Args).
evaluate(Expr, Arg):-
Arg is Expr.
关于prolog - 有没有办法在谓词参数内进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336713/