@@ -43,7 +43,7 @@ import Prelude hiding (mapM, mappend)
43
43
44
44
import Control.Arrow
45
45
import Control.Applicative
46
- import Control.Monad.Error hiding (mapM )
46
+ import Control.Monad.Except hiding (mapM )
47
47
import Control.Monad.State hiding (mapM , state )
48
48
import Control.Monad.Trans.Maybe
49
49
import qualified Control.Monad.Parallel as MP
@@ -127,8 +127,8 @@ evalTopExprsNoIO env exprs = do
127
127
collectDefs (expr: exprs) bindings rest =
128
128
case expr of
129
129
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"
132
132
_ -> collectDefs exprs bindings (expr : rest)
133
133
collectDefs [] bindings rest = return (bindings, reverse rest)
134
134
@@ -479,7 +479,7 @@ evalExpr env (MatchExpr target matcher clauses) = do
479
479
case result of
480
480
MCons bindings _ -> evalExpr (extendEnv env bindings) expr
481
481
MNil -> cont
482
- foldr tryMatchClause (throwError $ strMsg " failed pattern match" ) clauses
482
+ foldr tryMatchClause (throwError $ Default " failed pattern match" ) clauses
483
483
484
484
evalExpr env (SeqExpr expr1 expr2) = do
485
485
evalExprDeep env expr1
@@ -989,7 +989,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
989
989
let env' = extendEnvForNonLinearPatterns env bindings loops
990
990
case pattern of
991
991
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
993
993
994
994
LetPat bindings' pattern' ->
995
995
let extractBindings ([name], expr) =
@@ -1032,7 +1032,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
1032
1032
return $ msingleton $ MState env ((LoopPatContext (name, startNumRef) endsRef endPat pat pat'): loops) bindings ((MAtom ContPat target matcher): trees)
1033
1033
ContPat ->
1034
1034
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"
1036
1036
LoopPatContext (name, startNumRef) endsRef endPat pat pat' : loops' -> do
1037
1037
startNumWhnf <- evalRef startNumRef
1038
1038
startNum <- fromWHNF startNumWhnf :: (EgisonM Integer )
@@ -1078,7 +1078,7 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
1078
1078
if not (length patterns == length matchers) then throwError $ ArgumentsNum (length patterns) (length matchers) else return ()
1079
1079
let trees' = zipWith3 MAtom patterns targets matchers ++ trees
1080
1080
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
1082
1082
1083
1083
Something ->
1084
1084
case pattern of
@@ -1114,18 +1114,18 @@ processMState' (MState env loops bindings ((MAtom pattern target matcher):trees)
1114
1114
keys <- return $ HL. keys hash
1115
1115
vals <- mapM (newEvaluatedObjectRef . Value ) $ HL. elems hash
1116
1116
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
1118
1118
subst :: (Eq a ) => a -> b -> [(a , b )] -> [(a , b )]
1119
1119
subst k nv ((k', v'): xs) | k == k' = (k', nv): (subst k nv xs)
1120
1120
| otherwise = (k', v'): (subst k nv xs)
1121
1121
subst _ _ [] = []
1122
- IndexedPat pattern indices -> throwError $ strMsg (" invalid indexed-pattern: " ++ show pattern )
1122
+ IndexedPat pattern indices -> throwError $ Default (" invalid indexed-pattern: " ++ show pattern )
1123
1123
TuplePat patterns -> do
1124
1124
targets <- fromTupleWHNF target
1125
1125
if not (length patterns == length targets) then throwError $ ArgumentsNum (length patterns) (length targets) else return ()
1126
1126
let trees' = zipWith3 MAtom patterns targets (take (length patterns) (repeat Something )) ++ trees
1127
1127
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"
1129
1129
_ -> throwError $ EgisonBug $ " should not reach here. matcher: " ++ show matcher ++ " , pattern: " ++ show pattern
1130
1130
1131
1131
inductiveMatch :: Env -> EgisonPattern -> WHNFData -> Matcher ->
@@ -1149,8 +1149,8 @@ inductiveMatch env pattern target (UserMatcher matcherEnv _ clauses) = do
1149
1149
evalExpr env expr >>= fromCollection
1150
1150
_ -> cont
1151
1151
_ -> 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"
1154
1154
1155
1155
primitivePatPatternMatch :: Env -> PrimitivePatPattern -> EgisonPattern ->
1156
1156
MatchM ([EgisonPattern ], [Binding ])
0 commit comments