From e4ffd5179740cb5b68f6d96d279bff439b549f44 Mon Sep 17 00:00:00 2001 From: bringert Date: Thu, 20 Dec 2007 17:41:31 +0000 Subject: Moved Err definition to GF.Data.ErrM from GF.Data.Operations. This means the GF-embed does not have to include GF.Data.Operations. --- src/GF/Data/ErrM.hs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/GF/Data/ErrM.hs') diff --git a/src/GF/Data/ErrM.hs b/src/GF/Data/ErrM.hs index f588df1c0..e8cea12d4 100644 --- a/src/GF/Data/ErrM.hs +++ b/src/GF/Data/ErrM.hs @@ -12,9 +12,27 @@ -- hack for BNFC generated files. AR 21/9/2003 ----------------------------------------------------------------------------- -module GF.Data.ErrM ( - module GF.Data.Operations - ) where +module GF.Data.ErrM (Err(..)) where -import GF.Data.Operations (Err(..)) +import Control.Monad (MonadPlus(..)) +-- | like @Maybe@ type with error msgs +data Err a = Ok a | Bad String + deriving (Read, Show, Eq) + +instance Monad Err where + return = Ok + fail = Bad + Ok a >>= f = f a + Bad s >>= f = Bad s + +-- | added 2\/10\/2003 by PEB +instance Functor Err where + fmap f (Ok a) = Ok (f a) + fmap f (Bad s) = Bad s + +-- | added by KJ +instance MonadPlus Err where + mzero = Bad "error (no reason given)" + mplus (Ok a) _ = Ok a + mplus (Bad s) b = b -- cgit v1.2.3