#prolog
#пролог
Вопрос:
Я пытаюсь суммировать результаты суммы элементов списка. У меня есть этот код:
adding_lists(List1, List2, Result) :- sumlist(list1, Result1), sumlist(list2, Result1), Result is Result1 Result2.
но он возвращает false, каков способ для этой суммы?
Комментарии:
1. Не игнорируйте предупреждения компилятора.
Ответ №1:
Опубликованный вами код должен был выдавать вам одноэлементные предупреждения при обращении к вашему интерпретатору prolog. В Prolog чувствителен к регистру. Кроме того, List1
, который начинается с заглавной буквы, является переменной, а list1
, который начинается со строчной буквы, является атомом. Итак, в вашем коде вас должны были предупредить, что List1
, List2
и Result2
являются одноэлементными переменными (появляются только один раз в процедуре).
Помимо этого, вы выполняете два вызова sumlist/2
(предположительно для List1
и List2
и объединения результата с одной и той же переменной Result1
, тогда как второй вызов должен использовать Result2
).
После устранения этих проблем вы получите этот код:
adding_lists(List1, List2, Result) :-
sumlist(List1, Result1),
sumlist(List2, Result2),
Result is Result1 Result2.
это должно работать нормально.