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