fsmActions-0.4.0: Data/FsmActions/Error.hs
{- |
Error handling for FSMs.
-}
-- Copyright (c) 2009 Andy Gimblett - http://www.cs.swan.ac.uk/~csandy/
-- BSD Licence (see http://www.opensource.org/licenses/bsd-license.php)
{-# LANGUAGE DeriveDataTypeable #-}
module Data.FsmActions.Error (
FsmError(..),
ReadFsmMonad
) where
import Control.Exception
import Control.Monad.Error
import Data.Typeable
-- | Errors when reading matrices from strings.
data FsmError = FsmError {
-- | Explanatory message
msg :: String,
-- | Offending value
value :: String
} deriving (Eq, Typeable)
instance Exception FsmError
instance Error FsmError where
noMsg = FsmError "FSM error" ""
strMsg s = FsmError s ""
instance Show FsmError where
show (FsmError message val) = message ++ " (" ++ val ++ ")"
-- | Error monad for reading FSMs in.
type ReadFsmMonad = Either FsmError