bash> command &みたいに、バックグラウンドで関数を呼び出して、値が必要になった時に表に戻す、というイディオムを思い付きました。 (define (& t) (let ((c (make-channel))) (thread (lambda () (channel-put c (t)))) (lambda (k) (k (channel-get c)))))使い方 (let ((% (& (lambda () some hard work)))) ... (% values))ごちゃごちゃしがちなスレッドの同期処理がスッキリ書けて良いと思います。 追記: lambda が面倒なので、マクロにしてみました: (define-syntax & (syntax-rules () ((& e) (let ((c (make-channel))) (thread (lambda () (