Я пытаюсь пройти по 2D-массиву, который я создал с помощью 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. как мне выполнить какое-то выражение (например, напечатать "привет"), где я хочу? есть ли другой более простой способ применить функцию к каждому элементу в массиве repa?
repa
(хотя это не означает, что это невозможно).repa
- это все о распараллеливании вычислений на массивах различной формы.IO
, однако, по своей природе является последовательным. Кроме того,traverse
не означает то же, что и _5 _... - person Alec   schedule 28.10.2016drawTile
чистым, затем сложить массив, чтобы объединить чистые компоненты, и, наконец, фактически нарисовать на экране. - person Alec   schedule 28.10.2016