我有一个模拟,其中每个步骤的结果是下一步的输入。 模拟本身使用IO Monad(Repa:ComputeP),我想在文件运行时将每个步骤的结果写入文件。
我能想到的最接近的是我的模拟步骤中的iterateM_
动作,但这将永远运行。有没有办法只调用iterateM_
特定次数?
相关代码:
main :: IO ()
main = do
us <- iterateM_ (\u -> (computeP (simulStep u) :: IO (Array U DIM2 Double))) u0
zipWithM_ writeMatrixToTextFile (map show [1..]) us
(或者,对于我想做的事情,还有更好的选择)