2017-09-25 57 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',它返回索引列表,然後取這個列表的長度(也許有更好的方法,我不知道)。 –