summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Data/ErrM.hs
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2014-10-20 15:05:43 +0000
committerhallgren <hallgren@chalmers.se>2014-10-20 15:05:43 +0000
commit55aebadd5a64eb3f6a566168bbeeeb7cbb4ccb44 (patch)
treef47b796fe513256dcb6117f3a1af5c752d4ddbe5 /src/compiler/GF/Data/ErrM.hs
parentbb1f0f3368f3ee2065b0e5ee74e3c45b0116e8a9 (diff)
Remove some dead code
* The following modules are no longer used and have been removed completely: GF.Compile.Compute.ConcreteLazy GF.Compile.Compute.ConcreteStrict GF.Compile.Refresh * The STM monad has been commented out. It was only used in GF.Compile.SubExpOpt, where could be replaced with a plain State monad, since no error handling was needed. One of the functions was hardwired to the Err monad, but did in fact not use error handling, so it was turned into a pure function. * The function errVal has been renamed to fromErr (since it is analogous to fromMaybe). * Replaced 'fail' with 'raise' and 'return ()' with 'done' in a few places. * Some additional old code that was already commented out has been removed.
Diffstat (limited to 'src/compiler/GF/Data/ErrM.hs')
-rw-r--r--src/compiler/GF/Data/ErrM.hs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/compiler/GF/Data/ErrM.hs b/src/compiler/GF/Data/ErrM.hs
index d687a70a5..033c1efac 100644
--- a/src/compiler/GF/Data/ErrM.hs
+++ b/src/compiler/GF/Data/ErrM.hs
@@ -12,15 +12,25 @@
-- hack for BNFC generated files. AR 21/9/2003
-----------------------------------------------------------------------------
-module GF.Data.ErrM (Err(..)) where
+module GF.Data.ErrM where
import Control.Monad (MonadPlus(..),ap)
import Control.Applicative
--- | like @Maybe@ type with error msgs
+-- | Like 'Maybe' type with error msgs
data Err a = Ok a | Bad String
deriving (Read, Show, Eq)
+-- | Analogue of 'maybe'
+err :: (String -> b) -> (a -> b) -> Err a -> b
+err d f e = case e of
+ Ok a -> f a
+ Bad s -> d s
+
+-- | Analogue of 'fromMaybe'
+fromErr :: a -> Err a -> a
+fromErr a = err (const a) id
+
instance Monad Err where
return = Ok
fail = Bad