From 1c2edafcd825d7d881ddbb50288c94d6b1a679eb Mon Sep 17 00:00:00 2001 From: Tissevert Date: Wed, 10 Jun 2020 16:17:59 +0200 Subject: [PATCH] Import existing code --- CHANGELOG.md | 5 +++++ ExceptIOH.cabal | 27 +++++++++++++++++++++++++++ LICENSE | 30 ++++++++++++++++++++++++++++++ Setup.hs | 2 ++ src/Control/Monad/Except/IOH.hs | 8 ++++++++ 5 files changed, 72 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 ExceptIOH.cabal create mode 100644 LICENSE create mode 100644 Setup.hs create mode 100644 src/Control/Monad/Except/IOH.hs diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..99fcc46 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for ExceptIOH + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/ExceptIOH.cabal b/ExceptIOH.cabal new file mode 100644 index 0000000..5656982 --- /dev/null +++ b/ExceptIOH.cabal @@ -0,0 +1,27 @@ +cabal-version: >=1.10 +-- Initial package description 'ExceptIOH.cabal' generated by 'cabal init'. +-- For further documentation, see http://haskell.org/cabal/users-guide/ + +name: ExceptIOH +version: 0.1.0.0 +synopsis: Exception handling, cause apparently it's missing from the Except Monad ? +-- description: +homepage: https://git.marvid.fr/Tissevert/ExceptIOH +-- bug-reports: +license: BSD3 +license-file: LICENSE +author: Tissevert +maintainer: tissevert+devel@marvid.fr +-- copyright: +category: Control +build-type: Simple +extra-source-files: CHANGELOG.md + +library + exposed-modules: Control.Monad.Except.IOH + -- other-modules: + -- other-extensions: + build-depends: base >=4.12 && <4.13 + , mtl + hs-source-dirs: src + default-language: Haskell2010 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a58e302 --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +Copyright (c) 2020, Tissevert + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of Tissevert nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Setup.hs b/Setup.hs new file mode 100644 index 0000000..9a994af --- /dev/null +++ b/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/src/Control/Monad/Except/IOH.hs b/src/Control/Monad/Except/IOH.hs new file mode 100644 index 0000000..092ac3c --- /dev/null +++ b/src/Control/Monad/Except/IOH.hs @@ -0,0 +1,8 @@ +module Control.Monad.Except.IOH ( + handle + ) where + +import Control.Monad.Except (MonadError(..), ExceptT, runExceptT) + +handle :: Monad m => ExceptT a m b -> (a -> m b) -> m b +handle m handler = (runExceptT m) >>= either handler return