Мне нужно написать рекурсию в прологе, которая добавляет элементы из двух списков. Предположим, у нас есть список, A = [a,b,c]
и B = [d,e,f]
, а окончательный список, R
, должен выглядеть так: R = [a+d, b+e, c+f]
.Рекурсия списка прологов, добавьте элементы в список
я придумал только с этим:
xxx([a], [b], [a+b]).
xxx([H1|T1], [H2|T2], W) :- xxx(T1, T2, W), .(H1+H2, W).
Но это дает мне uncaught exception: error(syntax_error('user_input:5 (char:15) expression or ] expected in list'),read_term/3)
. Я также попытался это:
xxx([a], [b], [a+b]).
xxx([H1|T1], [H2|T2], W) :- xxx(T1, T2, W), append(H1+H2, W, []).
без успеха: uncaught exception: error(syntax_error('user_input:4 (char:16) expression or ] expected in list'),read_term/3)
Im использованием Gnu пролог (gprolog)
Обратите внимание, что оператор точек '.' для построения списков обычно скрыт; вам нужно сделать «трюк», чтобы иметь возможность использовать его. Вероятно, это то, что дает синтаксическую ошибку. –