diff options
| author | bringert <bringert@cs.chalmers.se> | 2007-12-20 17:41:31 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2007-12-20 17:41:31 +0000 |
| commit | e4ffd5179740cb5b68f6d96d279bff439b549f44 (patch) | |
| tree | 84d20ca008d745019eaf1d6ab90fdeaa81c69803 /src/GF/Data/ErrM.hs | |
| parent | 6bab46fbb2f0f34bb8f29fbde4cdc5807a554fce (diff) | |
Moved Err definition to GF.Data.ErrM from GF.Data.Operations. This means the GF-embed does not have to include GF.Data.Operations.
Diffstat (limited to 'src/GF/Data/ErrM.hs')
| -rw-r--r-- | src/GF/Data/ErrM.hs | 26 |
1 files changed, 22 insertions, 4 deletions
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 |
