点积Prolog / 3需要SUM的提示

时间:2013-12-16 19:43:34

标签: list prolog logic arithmetic-expressions

美好的一天我在prolog中做算术的问题,是的,它是我搜索过的产品,发现了一堆代码,这些代码与本书所要求的内容不相符。它是a / 3所以这就是我到目前为止,但我需要总结两个列表的产品的结果。有关应该建议做什么的暗示?

    dot([HD|TL],[HD2|TL2],Result):-
       Mul is HD2 * HD,
       dot(TL,TL2,Mul),
       Result is Mul + Reuslt2.
    dot([],[],0).

2 个答案:

答案 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).