module IO (bracket) where import Try -- The following implementation is direct from the Library Report. bracket :: IO a -> (a->IO b) -> (a->IO c) -> IO c bracket before after m = do x <- before rs <- try (m x) after x case rs of Right r -> return r Left e -> ioError e