{-# LANGUAGE ScopedTypeVariables #-} module ControlMaybe where -- import GHC.IO.Exception (IOException(..)) import Control.Exception as Exception (IOException(..),catch) withJust (Just x) f = f x withJust Nothing f = return () whenJust acn f = do x <- acn withJust x f catchIO_ :: IO a -> IO a -> IO a catchIO_ a h = Exception.catch a (\(_ :: IOException) -> h) handleIO_ = flip catchIO_