Я очень новичок в Prolog и все еще борюсь с синтаксисом языка. Я пытаюсь написать функтор, который просматривает список и создает новый список, причем голова является суммой всех номеров списка, а хвост - все, что в нем было.Prolog - сумма чисел в списке
Например, [1,2, a, 3, b, c, 4] = [10, a, b, c].
Прямо сейчас, я боюсь, что мой код очень груб, но если кто-то может указать мне в правильном направлении, я был бы очень признателен.
sumOfNumbers([X], Z) :-
number(X),
Z is Z+X.
sumOfNumbers([X], _) :-
not(number(X)).
sumOfNumbers([X|Rest], Z) :-
number(X),
Z is Z+X,
sumOfNumbers(Rest, Z).
sumOfNumbers([X|Rest], Z) :-
not(number(X)),
sumOfNumbers(Rest, Z).
Надеюсь, это далеко не полностью. Еще раз спасибо
в Prolog, Z есть Z + X, может быть истинным, только если X = 0 – CapelliC