关闭静态环境

闭包是一个保持内部状态的过程:

定义一个返回闭包的过程

程序 make-an-adder 接受一个参数 x 并返回一个关闭该值的函数。换句话说,x 在返回函数的词法范围内。

#lang racket
(define (make-an-adder x)
  (lambda (y)
    (+ y x)))

用法

调用过程 make-an-adder 会返回一个闭包过程。

Welcome to DrRacket, version 6.6 [3m].
Language: racket, with debugging; memory limit: 128 MB.
> (define 3adder (make-an-adder 3))
> (3adder 4)
7
> (define 8adder (make-an-adder 8))
> (8adder 4)
12