asynchronous exceptions in haskell
Asynchronous exceptions, such as timeouts are important for robust, modular programs, but are extremely difficult to program with  so much so that most programming languages either heavily restrict them or ban them altogether. We extend our earlier work, in which we added synchronous exceptions to Haskell, to support asynchronous exceptions too. Our design introduces scoped combinators for blocking and unblocking asynchronous interrupts, along with a somewhat surprising semantics for operations that can suspend. Uniquely, we also give a formal semantics for our system.
asynchronicity synchronization exception haskell robust modular program programming language support design combinational interrupt semantic operability formal semantics systems