小编Ere*_*enL的帖子

为什么make-counter过程包含两个lambda定义?

我正在试图理解制造计数器程序的方案代码.这是一个更高阶的程序(程序输出另一个程序),我坚持下去.

(define make-counter
  (lambda (n)
    (lambda () 
      (set! n (+ n 1))
      n)))

(define ca (make-counter 0))
(ca)
(ca)
Run Code Online (Sandbox Code Playgroud)

它按预期分别输出1和2.为什么我们需要2个嵌套程序?它们的功能分别是什么?

如果有人详细解释,我将不胜感激.谢谢你们.

lisp scheme counter closures

0
推荐指数
1
解决办法
79
查看次数

标签 统计

closures ×1

counter ×1

lisp ×1

scheme ×1