Desbordamiento de pila de la función recursiva llamada en Lisp

Estoy aprendiendo Lisp del libro "The Land of Lisp" de Conrad Barski. Ahora he golpeado mi primer escollo, donde el autor dice:

Llamarse a sí mismo de esta manera no solo se permite en Lisp, sino que a menudo se recomienda encarecidamente

después de mostrar la siguiente función de ejemplo para contar los elementos de una lista:

(defun my-length (list)
  (if list
    (1+ (my-length (cdr list)))
    0))

Cuando llamo a esta funciónmy-length con una lista que contiene un millón de artículos, recibo un error de desbordamiento de pila. Entonces, o nunca esperas tener una lista tan larga en Lisp (así que tal vez mi caso de uso sea inútil) o hay otra forma de contar los elementos en una lista tan larga. ¿Puedes tal vez aclarar algo sobre esto? (Estoy usando GNU CLISP en Windows, por cierto).

Respuestas a la pregunta(4)

Su respuesta a la pregunta