2017-09-25 43 views
0

我无法理解haskell数组。无法理解haskell数组

比如我要创建和存储变量bsd数组,但在发生什么....如果我想要的尺寸如10和布尔类型的数组。

bsd :: Array Int Bool --is this correct? 
bsd = .... --what comes here? 

请帮助我了解......

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

我怎样才能访问索引bsd

请帮助

+1

“数组”是一个纯数值。你不能改变它。有创建新数组表示修改旧数组的操作,但对于任何非小数组来说这些操作太慢。如果你的数组真的只有十个左右的元素,那么这很可能是好的,但否则你可能想要使用可变数组或纯序列。 – dfeuer

回答

2

使用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)] 
+0

我怎么说得到bsd的大小?我怎么能指定说索引2? – Jhoy

+0

@Jhoy'bsd // [(2,False)]'在索引2处分配? –

+0

对于大小,你可以做'索引bsd',它返回索引列表,然后取这个列表的长度(也许有更好的方法,我不知道)。 –