[plt-scheme] Asynchronous Let
Chongkai Zhu
czhu at cs.utah.edu
Thu Jul 5 10:25:46 EDT 2007
This `let/async' you want is not hard: using syntax-rules only is enough.
(define-syntax let/async
(syntax-rules ()
((_ ((name thunk) ...)
body ...)
(thread
(lambda ()
(letrec ((name name) ...)
(for-each thread-wait
(list
(thread
(lambda ()
(set! name
(with-handlers (((lambda (x) #t) values))
(thunk))))) ...))
body ...))))))
> I'd like to use this idiom for writing asynchronous operations,
particularly with socket connections, in an easy to read style. Or is
there a better way to do this?
The way exception is bound to "name"s doesn't seems natural to me.
Chongkai
More information about the plt-scheme
mailing list