Prologue: Vérifier si quelque chose est le dernier élément de la liste?

Je suis nouveau sur le prologue et je suis en fait, d'essayer d'écrire une clause qui permettrait d'évaluer true si un élément donné est le dernier élément dans une liste donnée. Voici ce que j'ai:

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

Je pensais que ce serait faire le tour, mais quand je demande prologue:

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

Prolog renvoie la valeur false. J'ai essayé la requête suivante pour voir ce Prologue pense devrait convenir à ma définition de ce dernier:

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

Donc, ce que je ne suis pas sûr à ce sujet est pourquoi le caractère "|" est toujours dans la liste?

Mise à jour: la dernière([c],[a,b,c]), on obtient le comportement souhaité. Cependant, je ne sais pas pourquoi mon 1er argument doit être une liste?

OriginalL'auteur user3295806 | 2014-02-11