From 95d50b25c990e8c945ce2507b16ff3c8b039d286 Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Mon, 25 Aug 2025 19:48:19 +0200 Subject: OCaml --- app/Data/Res.hs | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 app/Data/Res.hs (limited to 'app/Data/Res.hs') diff --git a/app/Data/Res.hs b/app/Data/Res.hs deleted file mode 100644 index 3806e5a..0000000 --- a/app/Data/Res.hs +++ /dev/null @@ -1,31 +0,0 @@ -module Data.Res where - -import Control.Applicative -import Data.String (IsString (fromString)) - -data Res e r = Ok r | Err e - -instance Functor (Res e) where - fmap f (Ok v) = Ok (f v) - fmap _ (Err e) = Err e - -instance Applicative (Res e) where - pure = Ok - (Ok f) <*> (Ok v) = Ok (f v) - (Err e) <*> _ = Err e - _ <*> (Err e) = Err e - -instance Monad (Res e) where - (Ok v) >>= f = f v - (Err e) >>= _ = Err e - -instance (IsString e) => MonadFail (Res e) where - fail = Err . fromString - -instance (IsString e) => Alternative (Res e) where - empty = fail "mzero" - m1@(Ok _) <|> _ = m1 - (Err _) <|> m2 = m2 - -liftEither :: Either e r -> Res e r -liftEither = either Err Ok -- cgit v1.2.3