Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 无法理解haskell数组_Arrays_Haskell - Fatal编程技术网

Arrays 无法理解haskell数组

Arrays 无法理解haskell数组,arrays,haskell,Arrays,Haskell,我无法理解haskell数组 例如,我想在变量bsd中创建并存储一个数组,但是如果我想要一个大小为eg 10且类型为Bool的数组,那么中会有什么 bsd :: Array Int Bool --is this correct? bsd = .... --what comes here? 请帮我理解 如果我想更改bsd中的值,例如索引5,语法是什么 如何访问bsd中的索引 请使用帮助 这将从列表中构造布尔数组。还有大量其他选项和功能可供使用 import Data.Array.IArray l

我无法理解haskell数组

例如,我想在变量
bsd
中创建并存储一个数组,但是如果我想要一个大小为eg 10且类型为Bool的数组,那么
中会有什么

bsd :: Array Int Bool --is this correct?
bsd = .... --what comes here?
请帮我理解

如果我想更改
bsd
中的值,例如索引5,语法是什么

如何访问bsd中的索引

请使用帮助

这将从列表中构造布尔数组。还有大量其他选项和功能可供使用

import Data.Array.IArray
let bsd = listArray (0, 3) [False, True, True, False] :: Array Int Bool
elems bsd -- [False,True,True,False]
bsd -- array (0,3) [(0,False),(1,True),(2,True),(3,False)]
bsd ! 0 -- Get element at index 0, which is False
-- Create new array with element 0 changed to True.
let bsd2 = bsd // [(0, True)]
bsd2 -- array (0,3) [(0,True),(1,True),(2,True),(3,False)]

我怎么说得到bsd的大小?我如何分配到索引2呢?@Jhoy
bsd//[(2,False)]
分配到索引2?对于大小,你可以做
indexs bsd
,它返回索引列表,然后取这个列表的长度(也许有更好的方法,我不知道)。
bounds bsd
提供最小+最大索引,因此你可以从中获得长度。另外
MArray
Data.Array.ST
更适合于涉及大量突变的场景。一个
Array
是一个纯值。你不能改变它。有一些操作用于创建表示对旧数组的修改的新数组,但对于任何非小型数组来说,这些操作都太慢。如果您的数组实际上只有10个左右的元素,那么这可能很好,但否则您可能希望使用可变数组或纯序列。