Mam wyszukać maksimum w liście. Napisałam taki kod :
maxz([X|Y],M) :- [A|B] = Y, A > X, M = A, maxz(B,M).
maxz([X|Y],M) :- [A|B] = Y, A <= X, M = X, maxz(B,M).
Biorę głowę listy porównuje ją z głową uzyskaną z ogona, jeśli głowa z ogona jest większa od głowy zapisują ją pod M w innym wypadku zapisuje głowę pod M. Wywołuje rekurencyjnie funkcje, parametrem jest ogon ogona.
1 ?- trace maxz([3,2,1],M).
ERROR: Syntax error: Operator expected
ERROR: trace
ERROR: ** here **
ERROR: maxz([3,2,1],M) .
Bez trace zwraca mi po prostu false, nie widzę tego "Operator expected"
- maxz([3,2,1],M).
false.