Prolog变量作为函子
我想创建这个prolog程序:用户输入-或+,如果-结果是3-2,否则是3+2。我写了这个程序,但编译器给了我错误。我能做什么Prolog变量作为函子,prolog,Prolog,我想创建这个prolog程序:用户输入-或+,如果-结果是3-2,否则是3+2。我写了这个程序,但编译器给了我错误。我能做什么 try(B):- read(A), B is A(3,2). 有几个问题 在Prolog中,函子不能是变量。您可以使用调用(Functor,arg1,arg2,…)。因此,您可以编写调用(A,3,2),而不是A(3,2) 不过,你还没有走出困境。在Prolog中,您不能定义自己的is/2将识别的算术运算is/2仅适用于内置算术运算。因此,在这种情况下,
try(B):-
read(A),
B is A(3,2).
有几个问题
在Prolog中,函子不能是变量。您可以使用调用(Functor,arg1,arg2,…)
。因此,您可以编写调用(A,3,2),而不是A(3,2)
不过,你还没有走出困境。在Prolog中,您不能定义自己的is/2
将识别的算术运算is/2
仅适用于内置算术运算。因此,在这种情况下,使用调用不会有帮助
但是,您可以使用=../2
构建是/2
将识别的术语<代码>=../2
提供了术语和列表之间的等效性:
functor(x, y, ...) =.. [functor, x, y, ...]
您可以这样使用它:
read_and_execute_op(Result) :-
read(Operator),
ArithmeticTerm =.. [Operator, 3, 2], % This builds a term, +(3,2)
Result is ArithmeticTerm.