0
これは部分的にhttp://www.haskell.org/haskellwiki/State_Monad にありますが、どのようにしてcとfの初期状態を定義するのかはわかりません。State Monadでの初期状態の定義方法を教えてください。
これはIORefsで動作しますが、グローバルな変更可能なデータは必要ありません。
StateT
で作業する場合、あなたはあなたがこれを書いているだけの空想の方法がある持っているので、どのような、状態の範囲をマーキングとして
run/eval/execStateT
と考えることができ
increment :: StateT Integer IO Integer
increment = do
n <- get
put (n+1)
return n
plusOne :: Integer -> IO Integer
plusOne n = execStateT increment n
printTChan mtch = do
forever $ do
m <- atomically $ readTChan mtch
case m of
"ping" -> plusOne c
_ -> plusOne f
print (c)
'runState'を見ましたか? – Ingo