<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><br><div><blockquote type="cite"><div><font class="Apple-style-span" color="#000000"><br></font>(define-syntax define-synchronized<br> &nbsp;(syntax-rules ()<br> &nbsp;&nbsp;&nbsp;[(_ (name args ...) body ...)<br> &nbsp;&nbsp;&nbsp;&nbsp;(define name<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let ((m (make-semaphore 1)))<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(λ(args ...)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(semaphore-wait m)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body ...<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(semaphore-post m))))]))<br></div></blockquote></div><br></div><div>That's indeed exactly what I was looking for! Looking at it, it seems easy, but it'd probably taken me days to write this on my own. (I currently only have some limited spare for doing programming.)</div><div><br></div><div>Thanks a lot to both of you!</div><div><br></div><div>Best,</div><div><br></div><div>Erich</div></body></html>