Haskell語言Array模塊中函數array的用法及代碼示例。
用法類型:
Ix a => (a,a) -> [(a,b)] -> Array a b
如果a是索引類型,而b是任何類型,則a中具有索引而b中的元素具有索引的數組的類型將寫為Array a b。數組可以由函數數組創建。 array的第一個參數是一對邊界,每個邊界都是該數組的索引類型。這些邊界按該順序是數組中的最低和最高索引。例如,長度為10的one-origin向量具有邊界(1,10),而長度為10的one-origin 10×10矩陣具有邊界((1,1),(10,10))。
數組的第二個參數是形式(索引,值)的關聯列表。通常,此列表將表示為理解。關聯(i,x)將索引i處的數組的值定義為x。如果列表中的任何索引超出範圍,則該數組未定義(即_ | _)。如果列表中的任何兩個關聯具有相同的索引,則該索引處的值是不確定的(即_ | _)。因為必須檢查索引中是否存在這些錯誤,所以arrays在bounds參數和關聯列表的索引中是嚴格的,但在值上是非嚴格的。
並不是數組邊界內的每個索引都需要出現在關聯列表中,但是與未出現的索引關聯的值將是不確定的。
示例1:
輸入:
array (1,3) [(1,1),(2,5),(3,6)] ! 2
輸出:
5
示例2:
輸入:
array (0,3) [(1,"A"),(2,"B"),(3,"D"),(0,"QQQ")]
輸出:
array (0,3) [(0,"QQQ"),(1,"A"),(2,"B"),(3,"D")]
示例3:
輸入:
array (1,10) (zip [1..10] [5,9..100])
輸出:
array (1,10) [(1,5),(2,9),(3,13),(4,17),(5,21),(6,25),(7,29),(8,33),(9,37),(10,41)]
示例4:
源碼:
import Array
a = array (1,10) ((1,1) : [(i, i * a!(i-1)) | i <- [2..10]])
輸入:
a
輸出:
array (1,10) [(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800)]
示例5:
輸入:
array ((1,1),(2,2)) [((2,1),"C"),((1,2),"B"),((1,1),"A"),((2,2),"D")]
輸出:
array ((1,1),(2,2)) [((1,1),"A"),((1,2),"B"),((2,1),"C"),((2,2),"D")]
示例6:
輸入:
array ((1,1),(2,2)) [((2,1),"C"),((1,2),"B"),((1,1),"A"),((2,2),"D")] ! (2,2)
輸出:
"D"
示例7:
輸入:
array ('a','c') [('a',"AAA"),('b',"BBB"),('c',"CCC")] ! 'b'
輸出:
"BBB"
相關用法
注:本文由純淨天空篩選整理自 haskell array。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。