我無法理解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