這裏只是一個簡化的代碼,我沒有設法工作。我不明白什麼是錯的。在Emacs Lisp中轉發函數時超出了評估深度
(defun enumerate-indicies (func)
(let ((index 0))
(while (< index 5)
(funcall func index)
(setq index (1+ index)))))
(defun enumerate-multiplied-indicies (func)
(enumerate-indicies #'(lambda (index)
(funcall func (* 10 index)))))
下面的測試代碼返回10
預期:
(defun test/enumerate-indicies()
(let ((sum 0))
(enumerate-indicies #'(lambda (index)
(setq sum (+ sum index))))
sum))
(test/enumerate-indicies)
但在我的Emacs以下原因error Lisp nesting exceeds max-lisp-eval-depth
:
(defun test/enumerate-multiplied-indicies()
(let ((sum 0))
(enumerate-multiplied-indicies #'(lambda (index)
(setq sum (+ sum index))))
sum))
(test/enumerate-multiplied-indicies)
請您給我的線索?這不應該是一個遞歸調用,但似乎是這樣。謝謝。
啓用詞法綁定可以修復它,但我不知道原因。 – xuchunyang