我对序言还很陌生,我想尝试创建一个行为如下的序言函数
calculate(add(1,sub(4,1)),Result)。结果= 4。
这是在做:1 +(4-1)= 4
我熟悉谓词,但是就能够编写一个add // 2谓词/运算符而言,我不知道从哪里开始。
非常感谢任何帮助或建议。
您仍在考虑功能
z = f(x,y)
:“ f(x,y)返回(替换为/减少为)值z ...”
谓词相关值为其他值:
p_f(x,y,z)
:“谓词p_建立关系/连接/链接值(x,y,z)使得z = f(x,y)”
所以要进行管道评估(数学符号(g°f)(x,y))
g(f(x,y))
您必须编写(此处不遵循“变量”以大写形式书写的Prolog约定:]
p_f(x,y,a),p_g(a,b)
并考虑通过p_f(x,y,_)
流入该表达式,通过p_g/2
传递到p_f(_,_,a), p_g(a,_)
并通过p_g(a,b)
流出该表达式的信息。
和p_f / 3或p_g / 2将失败(返回false,不是在他们的任何论点中,而是整体上)将不会有结果。
使用谓词的优势在于,对于p_f(x,y),如果y已知,可以请求x;如果x已知,则可以请求y,或成对的有效(x,y)(只要在计算上可行并且谓词已正确编码)。或谓词add/3
: