J'apprends le Lisp dans le livre "The Land of Lisp" de Conrad Barski. Maintenant, je l'ai frappé mon premier bloc d'achoppement, où l'auteur dit:Dépassement de pile à partir d'un appel de fonction récursif en Lisp
vous appel de cette manière est non seulement admis dans Lisp, mais il est souvent fortement encouragé
après avoir montré la fonction exemple suivant pour compter les éléments dans une liste:
(defun my-length (list)
(if list
(1+ (my-length (cdr list)))
0))
Quand j'appelle cette fonction my-length
avec une liste contenant un million d'articles, je reçois une erreur de débordement de pile. Donc soit vous ne vous attendez jamais à avoir une liste aussi longue dans Lisp (donc peut-être que mon cas d'utilisation est inutile) ou il y a une autre façon de compter les éléments dans une telle liste. Pouvez-vous peut-être faire la lumière là-dessus? (J'utilise GNU CLISP sur Windows, d'ailleurs).
http://docs.racket-lang.org/guide/Lists__Iteration__and_Recursion.html –
> * Donc, soit vous attendez jamais d'avoir une liste longue à Lisp * Vous savez qu'il ya une fonction 'length' , droite? C'est pourquoi vous avez appelé le vôtre 'my-length'. – Kaz