Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/IO/Try.hs
module IO (try) where import DIOError -- The following implementation is direct from the Library Report. try :: IO a -> IO (Either IOError a) try f = catch (do r <- f return (Right r)) (return . Left)