我正在从 Conrad Barski 的“The Land of Lisp”一书中学习 Lisp。现在我遇到了我的第一个绊脚石,作者说:
以这种方式称呼自己不仅在 Lisp 中是允许的,而且经常被强烈鼓励
在显示以下示例函数来计算列表中的项目后:
(defun my-length (list)
(if list
(1+ (my-length (cdr list)))
0))
my-length
当我使用包含一百万个项目的列表调用此函数时,出现堆栈溢出错误。因此,要么您永远不会期望在 Lisp 中有这么长的列表(所以也许我的用例没用),或者还有另一种方法可以计算如此长的列表中的项目。你能对此有所启发吗?(顺便说一下,我在 Windows 上使用 GNU CLISP)。