Ich lerne Lisp aus dem Buch "Das Land von Lisp" von Conrad Barski. Jetzt habe ich meinen ersten Stolperstein getroffen, in dem der Autor sagt:Stapelüberlauf von rekursiven Funktionsaufruf in Lisp
sich auf diese Weise aufrufen wird nicht nur in Lisp erlaubt, aber oft ermutigt stark
nach dem folgenden Beispielfunktion zeigt die Elemente in einer Liste zu zählen:
(defun my-length (list)
(if list
(1+ (my-length (cdr list)))
0))
Wenn ich diese Funktion aufrufen my-length
mit einer Liste eine Million Elemente enthält, erhalte ich einen Stapelüberlauf-Fehler. Entweder erwartet man nie, dass eine Liste in Lisp lang ist (vielleicht ist mein Anwendungsfall nutzlos) oder es gibt eine andere Möglichkeit, Elemente in einer so langen Liste zu zählen. Kannst du vielleicht etwas Licht darauf werfen? (Ich verwende übrigens GNU CLISP unter Windows).
http://docs.racket-lang.org/guide/Lists__Iteration__and_Recursion.html –
> * Also entweder man nie erwarten, dass eine Liste, die lange in Lisp haben * Sie wissen, dass es eine 'length' Funktion ist , Recht? Deshalb hast du deine 'Meine-Länge' genannt. – Kaz