2012-01-30 2 views
1

Je suis tryng pour obtenir l'élément de la position n à la position m. Mais j'ai une erreur. Comment puis-je résoudre ce problème?Lisp obtenir l'élément d'une liste

(defun element (list start end) 
(dotimes (start end) (n-esimo list start) 
)) 

(defun n-esimo (l n) 
    (cond ((equal n 0) (first l)) 
     (t (n-esimo (rest l) (- n 1))))) 
+0

Quelle erreur obtenez-vous? –

+0

Obtenez NIL. Pas d'erreur mais seulement zéro et ma liste n'est pas vide – marchetto91

+0

'N-esimo' existe déjà dans la norme Common Lisp, où il s'appelle' nth' (bien qu'il prenne les paramètres dans l'autre sens). 'Dotimes' ne fait pas ce que vous pensez qu'il fait. Regardez-le dans l'Hyperspec, par ex. en recherchant "clhs dotimes" sur Google. – Svante

Répondre

5

Il n'y a pas besoin de l'écrire (à moins que votre tâche fait partie de vos devoirs, que vous devriez alors nous dire en ajoutant la balise homework à votre question, ou à d'autres fins éducatives.). Common Lisp a cette fonction intégrée. Il s'appelle SUBSEQ.