:)
This commit is contained in:
@ -23,14 +23,13 @@ runEval = runEval' envEmpty stateInitial
|
||||
Nothing -> ([], Left ("Cannot find key: "++(show key)))
|
||||
runEval' r s (Free (KvPutOp key val m)) =
|
||||
runEval' r ((key,val):s) m
|
||||
runEval' r s (Free (TransactionOp l m)) = do
|
||||
(p, resl) <- (runEval' r s l)
|
||||
case (runEval' r s l) of
|
||||
Right _ -> do
|
||||
s' <- getState
|
||||
(ps, resm) <- (runEval' r s' m)
|
||||
return (p ++ ps, resm)
|
||||
Left _ -> do
|
||||
(ps, resm) <- runEval' r s m
|
||||
return (p ++ ps, resm)
|
||||
runEval' r s (Free (TransactionOp l m)) =
|
||||
let (p, resl) = runEval (do l >> getState)
|
||||
in case resl of
|
||||
Right s' ->
|
||||
let (ps, resm) = runEval' r s' m
|
||||
in (p ++ ps, resm)
|
||||
Left _ ->
|
||||
let (ps, resm) = runEval' r s m
|
||||
in (p ++ ps, resm)
|
||||
runEval' _ _ (Free (ErrorOp e)) = ([], Left e)
|
||||
|
Reference in New Issue
Block a user