:clown: KV-store
This commit is contained in:
@ -77,6 +77,8 @@ data EvalOp a
|
||||
| PrintOp String a
|
||||
| ErrorOp Error
|
||||
| TryCatchOp a a
|
||||
| KvGetOp Val (Val -> a)
|
||||
| KvPutOp Val Val a
|
||||
|
||||
instance Functor EvalOp where
|
||||
fmap f (ReadOp k) = ReadOp $ f . k
|
||||
@ -85,6 +87,8 @@ instance Functor EvalOp where
|
||||
fmap f (PrintOp p m) = PrintOp p $ f m
|
||||
fmap _ (ErrorOp e) = ErrorOp e
|
||||
fmap f (TryCatchOp m1 m2) = TryCatchOp (f m1) (f m2)
|
||||
fmap f (KvGetOp v k) = KvGetOp v (f . k)
|
||||
fmap f (KvPutOp v1 v2 m) = KvPutOp v1 v2 (f m)
|
||||
|
||||
type EvalM a = Free EvalOp a
|
||||
|
||||
@ -122,10 +126,10 @@ catch :: EvalM a -> EvalM a -> EvalM a
|
||||
catch m1 m2 = Free $ TryCatchOp m1 m2
|
||||
|
||||
evalKvGet :: Val -> EvalM Val
|
||||
evalKvGet = error "TODO"
|
||||
evalKvGet v = Free $ KvGetOp v $ \w -> pure w
|
||||
|
||||
evalKvPut :: Val -> Val -> EvalM ()
|
||||
evalKvPut = error "TODO"
|
||||
evalKvPut v1 v2 = Free $ KvPutOp v1 v2 $ pure ()
|
||||
|
||||
transaction :: EvalM () -> EvalM ()
|
||||
transaction = error "TODO"
|
||||
|
Reference in New Issue
Block a user