Skip to content

Commit b8fc003

Browse files
committed
Error -> Except
1 parent 26c5475 commit b8fc003

File tree

7 files changed

+28
-33
lines changed

7 files changed

+28
-33
lines changed

hs-src/Interpreter/egison.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Main where
22

33
import Prelude hiding (catch)
44
import Control.Exception ( AsyncException(..), catch )
5-
import Control.Monad.Error
5+
import Control.Monad.Except
66

77
import qualified Data.Text as T
88
import Data.Char

hs-src/Language/Egison/Core.hs

+12-12
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import Prelude hiding (mapM, mappend)
4343

4444
import Control.Arrow
4545
import Control.Applicative
46-
import Control.Monad.Error hiding (mapM)
46+
import Control.Monad.Except hiding (mapM)
4747
import Control.Monad.State hiding (mapM, state)
4848
import Control.Monad.Trans.Maybe
4949
import qualified Control.Monad.Parallel as MP
@@ -127,8 +127,8 @@ evalTopExprsNoIO env exprs = do
127127
collectDefs (expr:exprs) bindings rest =
128128
case expr of
129129
Define name expr -> collectDefs exprs ((show name, expr) : bindings) rest
130-
Load _ -> throwError $ strMsg "No IO support"
131-
LoadFile _ -> throwError $ strMsg "No IO support"
130+
Load _ -> throwError $ Default "No IO support"
131+
LoadFile _ -> throwError $ Default "No IO support"
132132
_ -> collectDefs exprs bindings (expr : rest)
133133
collectDefs [] bindings rest = return (bindings, reverse rest)
134134

@@ -479,7 +479,7 @@ evalExpr env (MatchExpr target matcher clauses) = do
479479
case result of
480480
MCons bindings _ -> evalExpr (extendEnv env bindings) expr
481481
MNil -> cont
482-
foldr tryMatchClause (throwError $ strMsg "failed pattern match") clauses
482+
foldr tryMatchClause (throwError $ Default "failed pattern match") clauses
483483

484484
evalExpr env (SeqExpr expr1 expr2) = do
485485
evalExprDeep env expr1
@@ -989,7 +989,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
989989
let env' = extendEnvForNonLinearPatterns env bindings loops
990990
case pattern of
991991
NotPat _ -> throwError $ EgisonBug "should not reach here (not pattern)"
992-
VarPat _ -> throwError $ strMsg $ "cannot use variable except in pattern function:" ++ show pattern
992+
VarPat _ -> throwError $ Default $ "cannot use variable except in pattern function:" ++ show pattern
993993

994994
LetPat bindings' pattern' ->
995995
let extractBindings ([name], expr) =
@@ -1032,7 +1032,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
10321032
return $ msingleton $ MState env ((LoopPatContext (name, startNumRef) endsRef endPat pat pat'):loops) bindings ((MAtom ContPat target matcher):trees)
10331033
ContPat ->
10341034
case loops of
1035-
[] -> throwError $ strMsg "cannot use cont pattern except in loop pattern"
1035+
[] -> throwError $ Default "cannot use cont pattern except in loop pattern"
10361036
LoopPatContext (name, startNumRef) endsRef endPat pat pat' : loops' -> do
10371037
startNumWhnf <- evalRef startNumRef
10381038
startNum <- fromWHNF startNumWhnf :: (EgisonM Integer)
@@ -1078,7 +1078,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
10781078
if not (length patterns == length matchers) then throwError $ ArgumentsNum (length patterns) (length matchers) else return ()
10791079
let trees' = zipWith3 MAtom patterns targets matchers ++ trees
10801080
return $ msingleton $ MState env loops bindings trees'
1081-
_ -> throwError $ strMsg $ "should not reach here. matcher: " ++ show matcher ++ ", pattern: " ++ show pattern
1081+
_ -> throwError $ Default $ "should not reach here. matcher: " ++ show matcher ++ ", pattern: " ++ show pattern
10821082

10831083
Something ->
10841084
case pattern of
@@ -1114,18 +1114,18 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
11141114
keys <- return $ HL.keys hash
11151115
vals <- mapM (newEvaluatedObjectRef . Value) $ HL.elems hash
11161116
updateHash indices (Intermediate $ IIntHash $ HL.fromList $ zip keys vals)
1117-
updateHash _ v = throwError $ strMsg $ "expected hash value: " ++ show v
1117+
updateHash _ v = throwError $ Default $ "expected hash value: " ++ show v
11181118
subst :: (Eq a) => a -> b -> [(a, b)] -> [(a, b)]
11191119
subst k nv ((k', v'):xs) | k == k' = (k', nv):(subst k nv xs)
11201120
| otherwise = (k', v'):(subst k nv xs)
11211121
subst _ _ [] = []
1122-
IndexedPat pattern indices -> throwError $ strMsg ("invalid indexed-pattern: " ++ show pattern)
1122+
IndexedPat pattern indices -> throwError $ Default ("invalid indexed-pattern: " ++ show pattern)
11231123
TuplePat patterns -> do
11241124
targets <- fromTupleWHNF target
11251125
if not (length patterns == length targets) then throwError $ ArgumentsNum (length patterns) (length targets) else return ()
11261126
let trees' = zipWith3 MAtom patterns targets (take (length patterns) (repeat Something)) ++ trees
11271127
return $ msingleton $ MState env loops bindings trees'
1128-
_ -> throwError $ strMsg "something can only match with a pattern variable"
1128+
_ -> throwError $ Default "something can only match with a pattern variable"
11291129
_ -> throwError $ EgisonBug $ "should not reach here. matcher: " ++ show matcher ++ ", pattern: " ++ show pattern
11301130

11311131
inductiveMatch :: Env -> EgisonPattern -> WHNFData -> Matcher ->
@@ -1149,8 +1149,8 @@ inductiveMatch env pattern target (UserMatcher matcherEnv _ clauses) = do
11491149
evalExpr env expr >>= fromCollection
11501150
_ -> cont
11511151
_ -> cont
1152-
failPPPatternMatch = throwError $ strMsg "failed primitive pattern pattern match"
1153-
failPDPatternMatch = throwError $ strMsg "failed primitive data pattern match"
1152+
failPPPatternMatch = throwError $ Default "failed primitive pattern pattern match"
1153+
failPDPatternMatch = throwError $ Default "failed primitive data pattern match"
11541154

11551155
primitivePatPatternMatch :: Env -> PrimitivePatPattern -> EgisonPattern ->
11561156
MatchM ([EgisonPattern], [Binding])

hs-src/Language/Egison/Desugar.hs

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ import qualified Data.Set as S
2525
import Data.List (span)
2626
import Data.Set (Set)
2727
import Data.Char (toUpper)
28-
import Control.Monad.Error
28+
import Control.Monad.Except
2929
import Control.Monad.Reader
3030
import Language.Egison.Types
3131

3232
type Subst = [(String, EgisonExpr)]
3333

34-
newtype DesugarM a = DesugarM { unDesugarM :: ReaderT Subst (ErrorT EgisonError Fresh) a }
34+
newtype DesugarM a = DesugarM { unDesugarM :: ReaderT Subst (ExceptT EgisonError Fresh) a }
3535
deriving (Functor, Applicative, Monad, MonadError EgisonError, MonadFresh, MonadReader Subst)
3636

3737
runDesugarM :: DesugarM a -> Fresh (Either EgisonError a)
38-
runDesugarM = runErrorT . flip runReaderT [] . unDesugarM
38+
runDesugarM = runExceptT . flip runReaderT [] . unDesugarM
3939

4040
desugarTopExpr :: EgisonTopExpr -> EgisonM EgisonTopExpr
4141
desugarTopExpr (Define name expr) = do

hs-src/Language/Egison/Parser.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ module Language.Egison.Parser
2626

2727
import Prelude hiding (mapM)
2828
import Control.Monad.Identity hiding (mapM)
29-
import Control.Monad.Error hiding (mapM)
29+
import Control.Monad.Except hiding (mapM)
3030
import Control.Monad.State hiding (mapM)
3131
import Control.Applicative ((<$>), (<*>), (*>), (<*), pure)
3232

@@ -98,7 +98,7 @@ loadLibraryFile file =
9898
loadFile :: FilePath -> EgisonM [EgisonTopExpr]
9999
loadFile file = do
100100
doesExist <- liftIO $ doesFileExist file
101-
unless doesExist $ throwError $ strMsg ("file does not exist: " ++ file)
101+
unless doesExist $ throwError $ Default ("file does not exist: " ++ file)
102102
input <- liftIO $ readFile file
103103
exprs <- readTopExprs $ shebang input
104104
concat <$> mapM recursiveLoad exprs

hs-src/Language/Egison/Primitives.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This module provides primitive functions in Egison.
1111
module Language.Egison.Primitives (primitiveEnv, primitiveEnvNoIO) where
1212

1313
import Control.Arrow
14-
import Control.Monad.Error
14+
import Control.Monad.Except
1515
import Control.Monad.Trans.Maybe
1616
import Control.Applicative ((<$>), (<*>), (*>), (<*), pure)
1717

hs-src/Language/Egison/Types.hs

+8-13
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ import Control.Exception
149149
import Data.Typeable
150150

151151
import Control.Applicative
152-
import Control.Monad.Error
152+
import Control.Monad.Except
153153
import Control.Monad.State
154154
import Control.Monad.Reader (ReaderT)
155155
import Control.Monad.Writer (WriterT)
@@ -745,7 +745,7 @@ tIntRef' i (Tensor (n:ns) xs js) =
745745
let ys = V.take w (V.drop (w * (fromIntegral (i - 1))) xs) in
746746
fromTensor $ Tensor ns ys (cdr js)
747747
else throwError $ TensorIndexOutOfBounds i n
748-
tIntRef' i _ = throwError $ strMsg "More indices than the order of the tensor"
748+
tIntRef' i _ = throwError $ Default "More indices than the order of the tensor"
749749

750750
tIntRef :: HasTensor a => [Integer] -> (Tensor a) -> EgisonM (Tensor a)
751751
tIntRef [] (Tensor [] xs _)
@@ -796,7 +796,7 @@ tref (s:ms) (Tensor (n:ns) xs js) = do
796796
let yss = split (product ns) xs
797797
ts <- mapM (\ys -> tref ms (Tensor ns ys (cdr js))) yss
798798
mapM toTensor ts >>= tConcat s >>= fromTensor
799-
tref _ t = throwError $ strMsg "More indices than the order of the tensor"
799+
tref _ t = throwError $ Default "More indices than the order of the tensor"
800800

801801
enumTensorIndices :: [Integer] -> [[Integer]]
802802
enumTensorIndices [] = [[]]
@@ -1043,7 +1043,7 @@ tClearIndex' js = reverse (g (reverse js))
10431043

10441044
getScalar :: (Tensor a) -> EgisonM a
10451045
getScalar (Scalar x) = return x
1046-
getScalar _ = throwError $ strMsg "Inconsitent Tensor order"
1046+
getScalar _ = throwError $ Default "Inconsitent Tensor order"
10471047

10481048
findPairs :: (a -> a -> Bool) -> [a] -> [(Int, Int)]
10491049
findPairs p xs = reverse $ findPairs' 0 p xs
@@ -1545,10 +1545,6 @@ instance Show EgisonError where
15451545

15461546
instance Exception EgisonError
15471547

1548-
instance Error EgisonError where
1549-
noMsg = Default "An error has occurred"
1550-
strMsg = Default
1551-
15521548
liftError :: (MonadError e m) => Either e a -> m a
15531549
liftError = either throwError return
15541550

@@ -1557,15 +1553,15 @@ liftError = either throwError return
15571553
--
15581554

15591555
newtype EgisonM a = EgisonM {
1560-
unEgisonM :: (ErrorT EgisonError (FreshT IO) a)
1556+
unEgisonM :: (ExceptT EgisonError (FreshT IO) a)
15611557
} deriving (Functor, Applicative, Monad, MonadIO, MonadError EgisonError, MonadFresh, MP.MonadParallel)
15621558
-- } deriving (Functor, Applicative, Monad, MonadIO, MonadError EgisonError, MonadFresh)
15631559

15641560
runEgisonM :: EgisonM a -> FreshT IO (Either EgisonError a)
1565-
runEgisonM = runErrorT . unEgisonM
1561+
runEgisonM = runExceptT . unEgisonM
15661562

15671563
liftEgisonM :: Fresh (Either EgisonError a) -> EgisonM a
1568-
liftEgisonM m = EgisonM $ ErrorT $ FreshT $ do
1564+
liftEgisonM m = EgisonM $ ExceptT $ FreshT $ do
15691565
s <- get
15701566
(a, s') <- return $ runFresh s m
15711567
put s'
@@ -1614,7 +1610,7 @@ instance (MonadState s m) => MonadState s (FreshT m) where
16141610
instance (MonadFresh m) => MonadFresh (StateT s m) where
16151611
fresh = lift $ fresh
16161612

1617-
instance (MonadFresh m, Error e) => MonadFresh (ErrorT e m) where
1613+
instance (MonadFresh m) => MonadFresh (ExceptT e m) where
16181614
fresh = lift $ fresh
16191615

16201616
instance (MonadFresh m, Monoid e) => MonadFresh (ReaderT e m) where
@@ -1626,7 +1622,6 @@ instance (MonadFresh m, Monoid e) => MonadFresh (WriterT e m) where
16261622
instance MonadIO (FreshT IO) where
16271623
liftIO = lift
16281624

1629-
instance (MP.MonadParallel m, Error e) => MP.MonadParallel (ErrorT e m)
16301625
instance (MP.MonadParallel m) => MP.MonadParallel (StateT s m)
16311626

16321627
runFreshT :: Monad m => (Int, Int) -> FreshT m a -> m (a, (Int, Int))

hs-src/Language/Egison/Util.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module Language.Egison.Util (getEgisonExpr, getEgisonExprOrNewLine, completeEgis
1111
import Data.List
1212
import Text.Regex.TDFA
1313
import System.Console.Haskeline hiding (handle, catch, throwTo)
14-
import Control.Monad.Error (liftIO)
14+
import Control.Monad.Except (liftIO)
1515

1616
import Language.Egison.Types
1717
import Language.Egison.Parser

0 commit comments

Comments
 (0)