mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
miising ErrM added...
This commit is contained in:
26
src/GF/Source/ErrM.hs
Normal file
26
src/GF/Source/ErrM.hs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
-- BNF Converter: Error Monad
|
||||||
|
-- Copyright (C) 2004 Author: Aarne Ranta
|
||||||
|
|
||||||
|
-- This file comes with NO WARRANTY and may be used FOR ANY PURPOSE.
|
||||||
|
module GF.Source.ErrM where
|
||||||
|
|
||||||
|
-- the Error monad: like Maybe type with error msgs
|
||||||
|
|
||||||
|
import Control.Monad (MonadPlus(..), liftM)
|
||||||
|
|
||||||
|
data Err a = Ok a | Bad String
|
||||||
|
deriving (Read, Show, Eq, Ord)
|
||||||
|
|
||||||
|
instance Monad Err where
|
||||||
|
return = Ok
|
||||||
|
fail = Bad
|
||||||
|
Ok a >>= f = f a
|
||||||
|
Bad s >>= f = Bad s
|
||||||
|
|
||||||
|
instance Functor Err where
|
||||||
|
fmap = liftM
|
||||||
|
|
||||||
|
instance MonadPlus Err where
|
||||||
|
mzero = Bad "Err.mzero"
|
||||||
|
mplus (Bad _) y = y
|
||||||
|
mplus x _ = x
|
||||||
Reference in New Issue
Block a user