我无法理解haskell数组。无法理解haskell数组
比如我要创建和存储变量bsd
数组,但在发生什么....
如果我想要的尺寸如10和布尔类型的数组。
bsd :: Array Int Bool --is this correct?
bsd = .... --what comes here?
请帮助我了解......
,如果我想在bsd
更改值在例如什么索引5什么是语法
我怎样才能访问索引bsd
?
请帮助
我无法理解haskell数组。无法理解haskell数组
比如我要创建和存储变量bsd
数组,但在发生什么....
如果我想要的尺寸如10和布尔类型的数组。
bsd :: Array Int Bool --is this correct?
bsd = .... --what comes here?
请帮助我了解......
,如果我想在bsd
更改值在例如什么索引5什么是语法
我怎样才能访问索引bsd
?
请帮助
使用https://hackage.haskell.org/package/array-0.5.2.0/docs/Data-Array-IArray.html
这种构造的bool从列表中的阵列。还有许多其他选项和功能可供使用
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
@Jhoy'bsd // [(2,False)]'在索引2处分配? –
对于大小,你可以做'索引bsd',它返回索引列表,然后取这个列表的长度(也许有更好的方法,我不知道)。 –
“数组”是一个纯数值。你不能改变它。有创建新数组表示修改旧数组的操作,但对于任何非小数组来说这些操作太慢。如果你的数组真的只有十个左右的元素,那么这很可能是好的,但否则你可能想要使用可变数组或纯序列。 – dfeuer