Bonjour tout le monde!

Je dois écrire une fonction récursive qui récupère un élément donnée dans une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
(garde 'a '(a a a & a & a $ a a))
(a a a a a a a)
Du coup j'ai écrit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
(defun garde (x liste)
 (cond
    ((not liste) nil)
    ((equal (car liste) x) (cons x (garde (cdr liste))))
    (t (garde (cdr liste))) ) )
En testant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
[2]> (garde 'a '(a a a & a & a $ a a))
 
*** - EVAL/APPLY: Too few arguments (1 instead of at least 2) given to garde
Rentrées possibles:
ABORT          :R1      Abort main loop
Break 1 [3]>
En testant j'obtiens cela comme réponse. Je ne comprends pas pour quoi on me dit trop peu d'arguments, qu'il en faut 2 alors que j'en déclares bien 2.

Merci pour vos réponses!