<div dir="ltr">I think the issue is that the tail guarantee can&#39;t be met if there are two handles (one won&#39;t be in tail position wrt to the sync).<div><br></div><div>Robby</div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Thu, Jul 25, 2013 at 12:48 PM, Asumu Takikawa <span dir="ltr">&lt;<a href="mailto:asumu@ccs.neu.edu" target="_blank">asumu@ccs.neu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all,<br>
<br>
I had a question about `handle-evt` and synchronizable events in<br>
general. I was trying to understand the documentation and only have a<br>
partial idea of the motivation behind `handle-evt` and the contracts of<br>
`handle-evt` and `wrap-evt`.<br>
<br>
In particular, what is the motivation for disallowing objects that<br>
satisfy `handle-evt?` as an argument for `handle-evt` and `wrap-evt`?<br>
<br>
As far as I understand, `handle-evt` allows more efficient<br>
post-processing of a synchronization result because the handler is<br>
called in tail position. However, it doesn&#39;t seem necessary to disallow<br>
the addition of more handlers (with the caveat that the tail call<br>
guarantee will disappear if this happens).<br>
<br>
Am I missing something?<br>
<br>
Note: I&#39;m asking because these restrictions in the contracts complicate<br>
the types that we need to assign in Typed Racket:<br>
  <a href="https://github.com/plt/racket/pull/379" target="_blank">https://github.com/plt/racket/pull/379</a><br>
<br>
Cheers,<br>
Asumu<br>
_________________________<br>
  Racket Developers list:<br>
  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</blockquote></div><br></div>