我有一个模拟,其中每一步的结果都是下一步的输入。模拟本身使用 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
(或者我想做的事情有更好的选择)