Haskell Repa - 遍历二维数组
Haskell Repa - traversing a 2D array
我正在尝试遍历我使用 repa 创建的二维数组,到目前为止我有在每个元素上调用的函数,但我不明白存在什么基本概念不允许我在该函数内执行表达式,什么我目前的情况如下:
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 函数中使用具有副作用的函数时出现编译错误。我如何在我想要的地方执行某种表达式(例如打印"hello")?有没有其他更简单的方法可以将函数应用于 repa 数组中的每个元素?
我按照用户 alec 的建议进行操作并返回了一个 IO 列表,然后使用以下函数将它们全部排序:
resequence_ :: [IO ()] -> IO ()
resequence_ = foldr (>>) (return ())
再次感谢您的帮助。为了将来参考,我错误地传递了 IO,问题不在于 repa。
我正在尝试遍历我使用 repa 创建的二维数组,到目前为止我有在每个元素上调用的函数,但我不明白存在什么基本概念不允许我在该函数内执行表达式,什么我目前的情况如下:
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 函数中使用具有副作用的函数时出现编译错误。我如何在我想要的地方执行某种表达式(例如打印"hello")?有没有其他更简单的方法可以将函数应用于 repa 数组中的每个元素?
我按照用户 alec 的建议进行操作并返回了一个 IO 列表,然后使用以下函数将它们全部排序:
resequence_ :: [IO ()] -> IO ()
resequence_ = foldr (>>) (return ())
再次感谢您的帮助。为了将来参考,我错误地传递了 IO,问题不在于 repa。