【发布时间】:2020-03-24 22:25:19
【问题描述】:
我需要一个谓词,它使用纯逻辑和自然数表示法加上序言中的列表列表。 例如谓词:
?-totalPlus([ [s(0)],[s(0),s(0)],[s(s(0))] ], Res).
结果必须是:
Res= s(s(s(s(s(0))))).
这是我的实现,但它只返回第一个列表的加号:
plusNat(0,X,X).
plusNat(s(X),Y,s(Z)):-plusNat(X,Y,Z).
plusList([],0).
plusList([X|Xs], S) :- plusList(Xs,SXs), plusNat(X,SXs,S).
totalPlus([],_).
totalPlus([X|Xs],Y):-totalPlus(Xs,_), plusList(X,Y).
------------------
?-totalPlus([ [s(0)],[s(0),s(0)],[s(s(0))] ], Res).
Res= s(0).
提前致谢!
【问题讨论】:
-
再次应用您在
plusList中使用的概念。 -
使用另一个谓词 plusList2 例如在 plusList 中调用?
-
是的,没错。
-
我已经证明了,但它不起作用=(你能举个例子吗?