This commit is contained in:
2024-10-06 15:30:00 +02:00
parent 95ad5d0b02
commit 067f70622f
2 changed files with 35 additions and 15 deletions

View File

@ -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)