Мне нужно добавить элементы в пустой список в прологе, но я попадаю в бесконечный цикл.Это мой код:
dot_product([],[],0).
dot_product([M|Ms],[N|Ns],Sum) :-
dot_product(Ms,Ns,S),
Sum is S+M*N.
add_tail([],X,[X]).
add_tail([H|T],X,[H|L]):-
add_tail(T,X,L).
row([],[],[]).
row(RI,[],[]).
row(RI,[Y|O],R) :-
dot_product(RI,Y,R1),
add_tail([],R1,R),
row(RI,O,R).
Пример ввода:
?-row([1,2],[[1,2],[3,4]],R).
Ожидаемый результат:
R=[5,11]
, но вместо этого он входит в бесконечный цикл.