maksimum z listy w prologu

0

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

Może weź przeczytaj w końcu jakiś tutorial, manual, coś? Albo chociaż użyj Google, a nie z każdym zadaniem lecisz na forum.

max([X], X) :- !.
max([X|XS], X) :- max(XS, Y), X >= Y.
max([X|XS], N) :- max(XS, N), N >  X.

1 użytkowników online, w tym zalogowanych: 0, gości: 1