【发布时间】:2013-04-30 19:13:40
【问题描述】:
我正在阅读 Practical Common Lisp,并且正在研究 REPL 中的闭包(第 6 章)。我正在尝试以下代码,我认为它列出了闭包,但我不知道如何在 REPL 中同时调用它们:
(defparameter *fn*
(let ((count 10))
(list
#'(lambda () (incf count))
#'(lambda () (decf count))
#'(lambda () count))))
我已阅读this question 的答案并尝试了一些和其他一些,但似乎没有任何效果。这是我尝试过的--
CL-USER> (apply #'funcall *fn*)
; Evaluation aborted on #<CCL::TOO-MANY-ARGUMENTS #x2100B8890D>.
CL-USER> (funcall *fn*)
; Evaluation aborted on #<TYPE-ERROR #x2100B5667D>.
CL-USER> (loop for function in *fn*
(collect (funcall function)))
; Evaluation aborted on #<CCL::SIMPLE-PROGRAM-ERROR #x2100C21D4D>.
CL-USER> (map #'funcall *fn*)
; Evaluation aborted on #<CCL::TOO-FEW-ARGUMENTS #x2100B7320D>.
我正在寻找的是可以打印的东西 (11 9 10)。
感谢您的帮助!
【问题讨论】:
标签: lisp closures common-lisp