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

toh*_*ava 5 haskell types list strong-typing

这种类型可能是

data NonEmptyList a = NEL a [a]
Run Code Online (Sandbox Code Playgroud)

功能head,tail和其他人将成为新创建的方法Listable类型的类.某些函数已经可以适合现有的类型类(maps/folds/traversals/monads).

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

Han*_*Lub 10

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


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

Haskell Wiki有一整非空列表.

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


Gab*_*lez 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