Prolog: die Überprüfung, ob etwas ist das Letzte Element in der Liste?

Ich bin neu in prolog und bin im Grunde beim schreiben eine Klausel, die würde als true ausgewertet werden, wenn ein bestimmtes Element ist das Letzte Element in einer gegebenen Liste. Hier ist, was ich habe:

last(X,[Y|X]).
last(X,[Y|Z]) :- last(X,Z).

Ich dachte, dies würde den trick tun, aber wenn ich Frage prolog:

?- last(c,[a,b,c]).

Prolog gibt false zurück. Ich habe versucht, die folgende Abfrage, um zu sehen, was Prolog denkt, sollte passen meine definition von Letzte:

?- last(c,X).
X = [_G530|c] ;
X = [_G530, _G533|c] ;
X = [_G530, _G533, _G536|c]

So, was ich bin nicht sicher, warum das " | " - symbol ist immer noch in der Liste?

Update: last([c],[a,b,c]) erzeugt das gewünschte Verhalten. Allerdings bin ich mir nicht sicher, warum mein 1. argument muss eine Liste?

InformationsquelleAutor user3295806 | 2014-02-11

Schreibe einen Kommentar