スキームではset!
、プライベート スコープを共有する 2 つ (またはそれ以上) の関数を作成するために使用できます。
(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> ...)))
または、3 番目の変数を使用して:
(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!
、最初に を使用し、2 番目に残りの変数を使用しているため、洗練されていないように見えますfunctions
。どちらもなしでこれを行う方法はありますか?