This commit is contained in:
2024-10-06 14:39:27 +02:00
parent b2d7c75b01
commit 94ba5579c8
3 changed files with 27 additions and 3 deletions

View File

@ -20,7 +20,17 @@ runEval = runEval' envEmpty stateInitial
runEval' r s (Free (KvGetOp key k)) =
case (lookup key s) of
Just val -> runEval' r s $ k val
Nothing -> ([], Left "Cannot find key :)")
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' _ _ (Free (ErrorOp e)) = ([], Left e)