我有这个程序:
(define count-calls
(let ((count 0))
(lambda char
(cond ((null? char)
(begin(set! count (+ 1 count))
count))
((eq? char 'how-many-calls) count)
((eq? char 'reset) (set! count 0))))))
当调用 (count-calls) 时,它确实加 1,但是当我调用 (count-calls 'how-many-calls) 时,它不能按预期工作。我发现如果你定义 (lambda (char) 而不是 (lambda char) 则找到 (eq? ...) 部分,但对于 (lambda char) 它似乎无法识别 char。