0

リストのすべての要素の合計が合計になるかどうかを判断する単純な述語を作成しようとしていますが、なぜ機能しないのかわかりません。

動作するはずですが、list_sum([1,2,3],X) を実行すると no が返されるか、list_sum([1,2,3],6) も null が返されます。何か案は?

list_sum([],0).
list_sum([F], V) :- F=V.
list_sum([F|R], V) :- list_sum(R, V-F).
4

2 に答える 2

3
list_sum([],0).
list_sum([V], V).
list_sum([F,G|R], V) :- S is F + G, list_sum([S|R], V).
于 2013-05-30T06:30:13.823 に答える
1

算術は明示的に評価する必要があります。試す

list_sum([], 0).
list_sum([F|R], V) :- list_sum(R, S), V is S+F.
于 2013-05-30T06:27:49.040 に答える