[英]Haskell. Why are arrays faster than lists?
我正在学习Haskell。 我还有一个问题:
列表类型是Haskell中的基本类型。 Haskell中的数组基于列表。 这是索引[Ix a]的列表,表提供的功能-对[(Ix a,Value)]的列表。 如果数组内部使用列表,为什么数组比列表快?
数组不是基于列表的,它们的实现与其他编程语言类似,具有连续的存储区域。
创建它们的最常用方法是, 数组函数将一个索引列表,值对作为参数,并且在您打印它们时也将它们显示为此类列表。 这是因为Haskell中的数组不仅可以用整数索引,还可以用任何实现Ix类型类的索引,例如(Int,Int)对,布尔值,Char's和许多其他版本。 因此,[(index,value)]表示实际上是唯一一种与Haskell中的数组一样通用的数组显示方法。
数组不是基于列表的。 列表是常规的递归数据类型:
data [] a = [] | a : [a]
虽然各种数组库(例如uvector,array,vector,carray,hmatrix)使用低级读取和写入操作来提供数组接口。 没有相似之处,只是两个数据结构都可以表示序列,尽管复杂度不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.