当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


haskell array用法及代码示例


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