在方案中,可以使用set!
创建两个(或更多)函数,它们之间共享一个私有范围:
(define f1 #f) ; or any other "undefined" value
(define f2 #f)
(let ((private some-value) (another-private some-other-value))
(set! f1 (lambda ... <use of private variables> ...))
(set! f2 (lambda ... <use of private variables> ...)))
或通过使用第三个变量:
(define functions
(let ((private some-value) (another-private some-other-value))
(list (lambda ... <use of private variables> ...)
(lambda ... <use of private variables> ...))))
(define f1 (car functions))
(define f2 (cadr functions))
然而,由于set!
在第一个和第二个中使用了剩余变量,这两个似乎都不优雅functions
。有没有办法做到这一点?