Prolog-如何将表达式赋值给变量

时间:2016-04-10 14:51:51

标签: string prolog expression predicate

您好我正在尝试构建一个谓词,对于给定的参数返回一个全新的表达式。 假设我想通过添加两个数字来创建新表达式。 所以当我执行这样的事情时。

my_predicate(1,2,X).

Prolog会回来:

X = 1+2

不幸的是,我不知道如何构建这样的结构并将其分配给X变量。我很感激有关这个主题的建议。

1 个答案:

答案 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)