Wpis z mikrobloga

No kurde po prostu nie umiem. Siedzę nad tym gównem już ponad godzinę i dupa.

Zadanie jest proste.
Napisz swoją wersję predykatu sumlist w prologu...
Proste, a jednak nie.

Nie umiem rozkminić jak zainicjować zmienną.

W sensie coś jak
int x = 0;
Czy inne takie.

Czy ktoś może przełożyć prologowy na ludzki dla mnie?

#prosze #programowanie #prolog #help
  • 8
@hydeparkk:

[trace] 47 ?- my_sumlist([5,4,3,8],A).
Call: (7) my_sumlist([5, 4, 3, 8], _G16949) ? creep
Call: (8) integer(5) ? creep
Exit: (8) integer(5) ? creep
Call: (8) x is 0 ? creep
Fail: (8) x is 0 ? creep
Fail: (7) my_sumlist([5, 4, 3, 8], _G16949) ? creep
false.
@GrabkaMan: OK, już wszystko pamiętam, is służy do przypisywania wyników działań arytmetycznych a nie do inicjowania jakichkolwiek wartości. Początkowe 0 musi być parametrem funkcji i do niego powinny być dodawane kolejne elementy z listy, trzeci parametr może być tym wynikowym. Zawsze można to nadpisać funkcją dwuargumentrową, która to będzie wołała już tą właściwą służacą sumowaniu elementów listy z ustawionym na sztywno 0:

suma(lista, wynik) :- suma_tmp(lista, 0, wynik).