为什么Haskell基础库中没有“非空列表”类型?

时间:2014-12-29 19:46:59

标签: list haskell types strong-typing

此类型可能是

data NonEmptyList a = NEL a [a]

函数headtail和其他函数将成为新创建的Listable类型类的方法。某些函数已经可以适合现有的类型类(maps / folds / traversals / monads)。

为什么这样的类型不是Haskell标准库的一部分?

3 个答案:

答案 0 :(得分:10)

自GHC 8.0起,它现在已经基础:https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List-NonEmpty.html


定义这种类型的包列表本身就是非空的:至少有六种:

Haskell Wiki有关于非空列表的整个page

您的问题:为什么是不在基础包中的非空列表更难回答。但是类型是来自base(FoldableZip)的许多有用类的实例,因此使用它们的机制已经存在,并且您只需要使用少量实例定义即可。

答案 1 :(得分:7)

该类型确实存在。

您必须导入

Data.List.NonEmpty    

更多信息:http://hackage.haskell.org/package/semigroups-0.16.0.1/docs/Data-List-NonEmpty.html

答案 2 :(得分:6)

自GHC 8.0.1起,base现在在NonEmpty中有Data.List.NonEmpty列表类型:

https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List-NonEmpty.html