美好的一天我在prolog中做算术的问题,是的,它是我搜索过的产品,发现了一堆代码,这些代码与本书所要求的内容不相符。它是a / 3所以这就是我到目前为止,但我需要总结两个列表的产品的结果。有关应该建议做什么的暗示?
dot([HD|TL],[HD2|TL2],Result):-
Mul is HD2 * HD,
dot(TL,TL2,Mul),
Result is Mul + Reuslt2.
dot([],[],0).
答案 0 :(得分:4)
您的问题是,您使用Mul
两次意味着使用它一次,Reuslt2
在任何地方都不存在。可能你的意思是:
dot([], [], 0).
dot([H1|T1], [H2|T2], Result) :-
Prod is H1 * H2,
dot(T1, T2, Remaining),
Result is Prod + Remaining.
答案 1 :(得分:2)
您使用SWI-Prolog,因此您可以尝试:
:- use_module(library(lambda)).
my_dot(L1,L2,R) :-
foldl(\X^Y^Z^T^(T is X*Y + Z), L1,L2,0,R).