關閉靜態環境

閉包是一個保持內部狀態的過程:

定義一個返回閉包的過程

程式 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