úÎ!! 8Yet another error monad but for people who are not crazy(c) Erick Gonzalez, 2019BSD3erick@codemonkeylabs.deSafe&'¢failableThe © class. A Monad which is an instance of this class can be used as a context in a function running in one with this class constraint, in order to report error conditionsfailable§trigger a failure. It takes an exception value as argument and it returns whatever might be used to abort a monadic computation in the monad instantiating this class.failable!Perform a set of IO actions in a    instance, triggering a † upon an IO exception, instead of blindly triggering an asynchronos exception. This serves ultimately to unify error handling in the  context. For example: qfoo :: (Failable m, MonadIO m) => m () foo = do failableIO $ do txt <- readFile "foo.txt" putStrLn txt »> runExceptT fooBLeft foo.txt: openFile: does not exist (No such file or directory)»> runMaybeT fooNothing»> fooL*** Exception: foo.txt: openFile: does not exist (No such file or directory)Safeø    'failable-0.1.1.0-6D0D1t1IDd887ZYZ3V9L9cControl.Monad.FailablePaths_failableFailablefailure failableIO$fFailableExceptT$fFailableMaybeT$fFailableEither$fFailableMaybe $fFailable[] $fFailableIObaseControl.Monad.IO.ClassMonadIOversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName