[racket-dev] Motivation for handle-evt/wrap-evt contracts

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Thu Jul 25 14:45:21 EDT 2013

On 2013-07-25 12:36:32 -0600, Matthew Flatt wrote:
> My thought was that you should only use `handle-evt' if you need tail
> behavior for something like a loop. If you use `handle-evt' and you're
> not getting tail behavior (but `sync' continues on, anyway), then
> something has gone wrong --- and maybe it's better to get an error than
> have a slow leak that will be tricky to detect.

I could see how that might be a better choice for debugging. Especially
since it seems that people don't check `handle-evt?` on events (which
you would need to do to ensure tail-behavior in semantics 2).

In particular, there are zero uses of `handle-evt?` in the codebase
outside of tests.

Since it's primarily a performance debugging feature, it seems OK to
ignore the distinction in Typed Racket and keep the current semantics.

Thanks,
Asumu

Posted on the dev mailing list.