• [^] # Re: Bouh !

    Posté par (site web personnel, Mastodon) . En réponse au journal TapTempo en emacs lisp. Évalué à 0. Dernière modification le 12 mars 2018 à 22:30.

    la récursion pas terminale, c'est mal

    Quelle solution proposes-tu pour l'utiliser avec Emacs Lisp qui n'optimise pas les appels récursifs terminaux ? :-)

    Par curiosité, après avoir lu ton message j'ai essayé d'écrire une fonction factorielle récursive, et je ne peux même pas évaluer (factorielle 2) sans me prendre une erreur Lisp nesting exceeds ‘max-lisp-eval-depth’. Si j'augmente la valeur de cette limite, je bute sur Variable binding depth exceeds max-specpdl-size (et si j'augmente cette dernière, je reçois à nouveau la première erreur). J'avoue ne pas bien connaître Emacs Lisp (je m'en sers seulement pour configurer Emacs, ce qui consiste principalement à changer la valeur de variables... par réellement programmer), mais l'interpréteur semble déconseiller activement les solutions récursives.

    Je me suis peut-être planté dans la définition, mais je ne crois pas car c'est la fonction récursive la plus facile à écrire :

    (defun factorielle
     (n)
     "Factorielle récursive."
     (* n (factorielle (- n 1))))