Haskell Repa - 遍历2D数组

时间:2016-10-28 16:39:06

标签: haskell repa

我试图遍历我使用repa创建的2D数组,到目前为止,我有在每个元素上调用的函数,但我不明白存在什么基本概念不会让我在该函数内执行表达式,我有什么到目前为止如下:

 drawTile ::(DIM2 -> Int) -> DIM2 -> Int
 drawTile f (Z :. i :. j) = do
   <this is where i want to do some IO>

 drawScene :: [GLuint] -> Array U DIM2 Int -> GLFW.Window -> IO()
 drawScene texs map win = do
   x <- computeP $(traverse map id drawTile)::IO (Array UDIM2 Int)
   return ()

你可以忽略纹理和OpenGL的东西,这将是一个游戏。当我尝试在drawTile函数中使用带副作用的函数时,我得到编译错误。我如何执行某种表达(打印&#34;你好&#34;例如),我想要的地方?有没有其他更简单的方法将函数应用于repa数组中的每个元素?

1 个答案:

答案 0 :(得分:1)

我做了用户alec建议并返回IO列表,然后使用以下函数对它们进行排序:

resequence_ :: [IO ()] -> IO ()
resequence_ = foldr (>>) (return ())

再次感谢您的帮助。为了将来参考,我错误地传递了IO,问题不在于修复。