我怎样才能让put在forM_内部的StateT monad上工作
loop :: Integer -> StateT World IO ()
loop passes = do
(scene, b1) <- get
forM_ [1..passes] $ \pass -> do
let b2 = foo b1 pass
-- other stuff --
put (scene, b2) -- this no longer puts into the StateT monad 发布于 2013-01-07 09:23:02
我认为它工作得很好,例如:
--I don't know what World is so I can't use your example
loop :: StateT Integer IO ()
loop = do
forM_ [1..10] put
x <- get
liftIO $ print x正如我所期望的那样,运行evalStateT loop 0会打印10。幕后的mapM_是这样做的:
foldr (>>) (return ()) listOfMappedValues还不清楚您到底想要什么,但这将允许您将mapM_中的内容放入状态
https://stackoverflow.com/questions/14188278
复制相似问题