您好我正在尝试构建一个谓词,对于给定的参数返回一个全新的表达式。 假设我想通过添加两个数字来创建新表达式。 所以当我执行这样的事情时。
my_predicate(1,2,X).
Prolog会回来:
X = 1+2
不幸的是,我不知道如何构建这样的结构并将其分配给X
变量。我很感激有关这个主题的建议。
答案 0 :(得分:5)
谓词应该描述潜在参数和它们可能形成的表达式之间的关系,所以为什么不把它称为args_expr / 3。这是一个加法和乘法的例子。您可以轻松地将此方法扩展到其他表达式:
args_expr(Arg1,Arg2,Arg1 + Arg2).
args_expr(Arg1,Arg2,Arg1 * Arg2).
示例查询:
?- args_expr(1,2,X).
X = 1+2 ? ;
X = 1*2
?- args_expr((1+2),(3*4),X).
X = 1+2+3*4 ? ;
X = (1+2)*(3*4)
?- args_expr(1+2,3*4,X).
X = 1+2+3*4 ? ;
X = (1+2)*(3*4)