Prolog变量作为函子

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仅适用于内置算术运算。因此,在这种情况下,

我想创建这个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
仅适用于内置算术运算。因此,在这种情况下,使用
调用
不会有帮助

但是,您可以使用
=../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.