@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:
Jeśli się w Polsce na dobre zalęgną ci od blokowania ulic, to po prostu trzymajcie w samochodzie jedną z tych szwedzkich śmierdzących konserw rybnych. W razie spotkania otwieracie ją i wywalacie zawartość tuż obok przyklejonego do asfaltu aktywiszcza.
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
x is 0
[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.
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).