此类型可能是
data NonEmptyList a = NEL a [a]
函数head
,tail
和其他函数将成为新创建的Listable
类型类的方法。某些函数已经可以适合现有的类型类(maps / folds / traversals / monads)。
为什么这样的类型不是Haskell标准库的一部分?
答案 0 :(得分:10)
自GHC 8.0起,它现在已经基础:https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List-NonEmpty.html
定义这种类型的包列表本身就是非空的:至少有六种:
Haskell Wiki有关于非空列表的整个page。
您的问题:为什么是不在基础包中的非空列表更难回答。但是类型是来自base(Foldable
,Zip
)的许多有用类的实例,因此使用它们的机制已经存在,并且您只需要使用少量实例定义即可。
答案 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