prolog将函数调用视为结构定义

时间:2018-05-11 13:58:47

标签: prolog

我有一项任务,将基本算术定义为零增量(即add(inc(inc(inc(zero))),inc(inc(zero)),Z)给出Z = inc(inc(inc(inc(inc(zero))))))。

添加实现为

add(zero, Y, Z) :- Z = Y.
add(inc(X), Y, Z) :- add(X, Y, V), Z = inc(V).

我正在尝试将mul实现为

mul(zero, Y, Z) :- Z = zero.
mul(inc(zero), Y, Z) :- Z = Y.
mul(inc(X), Y, Z) :- mul(X,Y,V), Z = add(Y,Y,Z).

但是这会将add(Y,Y,Z)视为结构定义而不是谓词添加,只返回add(add(inc(inc(zero)), inc(zero)), add(inc(zero),(inc(zero)))之类的内容 有没有人知道如何将它作为谓词处理?

0 个答案:

没有答案