Estouro de pilha da chamada de função recursiva em Lisp

Estou aprendendo Lisp do livro "The Land of Lisp" de Conrad Barski. Agora eu bati meu primeiro obstáculo, onde o autor diz:

Chamar-se dessa maneira não é permitido apenas em Lisp, mas é freqüentemente encorajado

depois de mostrar a seguinte função de exemplo para contar os itens em uma lista:

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

Quando eu chamo essa funçãomy-length com uma lista contendo um milhão de itens, recebo um erro de estouro de pilha. Então você nunca espera ter uma lista tão longa no Lisp (então talvez meu caso de uso seja inútil) ou há outra maneira de contar itens em uma lista tão longa. Você pode talvez brilhar alguma luz sobre isso? (Eu estou usando o GNU CLISP no Windows, a propósito).

questionAnswers(4)

yourAnswerToTheQuestion