如何获取 Haskell UArray 的所有元素
How to get all elements of a Haskell UArray
我正在通过尝试构建命令行版本的俄罗斯方块来练习我的 Haskell 技能。对于游戏板,我使用的是 UArray,因为我可以冻结和解冻它,这让我可以查看当前的俄罗斯方块是否与当前放置的棋子发生碰撞,而无需搜索整个棋盘(如果我需要这样做,我需要这样做)使用列表)。我有 运行 问题,我不确定如何将此数组转换为 Text
或 String
以将其输出到控制台。
目前我只使用电路板的一排,我使用以下函数对其进行初始化:
gameBoardWidth = 10 :: Int
initBoard :: UArray Int Char
initBoard = runSTUArray $ do
let lastCol = gameBoardWidth - 1
row <- newArray (0,lastCol) ' '
return row
现在我不确定如何从数组中取出 Char
进行打印。 From the standard Array interface elems
看起来像我需要的,但这似乎不适用于 UArrays
。
*Main Console Lib Paths_haskell_tetris Data.Array> elems initBoard
• Couldn't match expected type ‘Array i0 e’
with actual type ‘Data.Array.Base.UArray Int Char’
我的另一个想法是尝试在 do
块中使用 readArray
函数,但我不确定如何用函数式语言连接每个字符串的结果
以防万一我的问题与我导入的包有关,这些是我的导入:
import Data.Array.Unboxed
import Data.Array.ST
import Control.Monad
import Control.Monad.ST
您的测试使用 Data.Array.elems
,它仅适用于 Array
。
您需要改为调用 class 方法 Data.Array.IArray.elems
,该方法适用于任何不可变数组,包括 UArray
.
我正在通过尝试构建命令行版本的俄罗斯方块来练习我的 Haskell 技能。对于游戏板,我使用的是 UArray,因为我可以冻结和解冻它,这让我可以查看当前的俄罗斯方块是否与当前放置的棋子发生碰撞,而无需搜索整个棋盘(如果我需要这样做,我需要这样做)使用列表)。我有 运行 问题,我不确定如何将此数组转换为 Text
或 String
以将其输出到控制台。
目前我只使用电路板的一排,我使用以下函数对其进行初始化:
gameBoardWidth = 10 :: Int
initBoard :: UArray Int Char
initBoard = runSTUArray $ do
let lastCol = gameBoardWidth - 1
row <- newArray (0,lastCol) ' '
return row
现在我不确定如何从数组中取出 Char
进行打印。 From the standard Array interface elems
看起来像我需要的,但这似乎不适用于 UArrays
。
*Main Console Lib Paths_haskell_tetris Data.Array> elems initBoard
• Couldn't match expected type ‘Array i0 e’
with actual type ‘Data.Array.Base.UArray Int Char’
我的另一个想法是尝试在 do
块中使用 readArray
函数,但我不确定如何用函数式语言连接每个字符串的结果
以防万一我的问题与我导入的包有关,这些是我的导入:
import Data.Array.Unboxed
import Data.Array.ST
import Control.Monad
import Control.Monad.ST
您的测试使用 Data.Array.elems
,它仅适用于 Array
。
您需要改为调用 class 方法 Data.Array.IArray.elems
,该方法适用于任何不可变数组,包括 UArray
.