相关疑难解决方法(0)

将状态与IO操作相结合

假设我有一个状态monad,例如:

data Registers = Reg {...}

data ST = ST {registers :: Registers,
              memory    :: Array Int Int}

newtype Op a = Op {runOp :: ST -> (ST, a)}

instance Monad Op where
 return a    = Op $ \st -> (st, a)
 (>>=) stf f = Op $ \st -> let (st1, a1) = runOp stf st
                               (st2, a2) = runOp (f a1) st1
                            in (st2, a2)
Run Code Online (Sandbox Code Playgroud)

功能如

getState :: (ST -> a) -> Op a
getState g = Op …
Run Code Online (Sandbox Code Playgroud)

monads state haskell

28
推荐指数
2
解决办法
6214
查看次数

标签 统计

haskell ×1

monads ×1

state ×1