Lil*_*ung 3 scheme functional-programming
在方案中,可以使用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> ...)))
Run Code Online (Sandbox Code Playgroud)
或者使用第三个变量:
(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))
Run Code Online (Sandbox Code Playgroud)
然而,由于在第二个中使用set!了第一个和剩下的变量functions,所以这两个看起来都不优雅.有没有办法做到这一点没有?
(define-values (f1 f2)
(let ((private values) ...)
(values (lambda ...)
(lambda ...))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |