[Haskell] generic catch in a MonadIO