(# s', i #) -> (# s', i /=# 0# #)
onException :: IO a -> IO b -> IO a
-onException io what = io `catchException` \e -> do what
+onException io what = io `catchException` \e -> do _ <- what
throw (e :: SomeException)
finally :: IO a -- ^ computation to run first
a `finally` sequel =
block (do
r <- unblock a `onException` sequel
- sequel
+ _ <- sequel
return r
)