Сумма сумм элементов списка | Prolog

#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.
  

это должно работать нормально.