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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。