Voila ca fait une semaine que je me prend la tete et je n'arrive pas à faire cet exo je dois créer une fonction qui détecte une circularité

Ecrire la fonction récursive circulaire qui détecte qu'une liste plate (sans sous-listes) est circulaire par son début.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
(setq liste '(a b c))
(rplacd (cddr liste) liste)
 
(circulaire liste) => t
(circulaire '(a b c a b c)) => nil
Utilisez la fonction eq, qui compare deux adresses.

voila ce que j'ai pondu
mais ca ne marche pas
merci de m'expliquer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
(defun circulaire (liste &aux frst)
 (setq frst (car liste))
 (atom (liste) nil)
 (cond
  ((eq (cadr liste) frst) t)
  ((circulaire (cdr liste))) ))
merci