我写了这段代码:
sum_list([], 0).
sum_list([H|T], X) :-
sum_list(T, Rest),
X is H + Rest.
它计算所有列表元素的总和。例如,如果我打电话:
sum_list([1,2,3], X).
它返回6.但我还想能够计算2D列表的总和。例如,如果我通过sum_list([[1,2],[3,4]], X)
。我会得到10。
但是当我试图通过这个清单时,我得到了:
uncaught exception: error(type_error(evaluable,'.'/2),(is)/2)
错误。这个错误有什么问题?我无法在网上找到有关它的任何有用信息。
答案 0 :(得分:1)
sum_list期待一维数组,您可以尝试这样的事情:
sum2D_list([X|T],R):-
sum2D_list(T,R2),
sum_list(X,R3),
R is R3+R2.
sum2D_list([],0).
我用
尝试了sum2D_list([[1,2],[3,4]],X).
结果是
X = 10.