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)的许多有用类的实例,因此使用它们的机制已经存在,并且您只需要使用少量实例定义.
小智 7
该类型实际存在.
你必须导入
Data.List.NonEmpty
Run Code Online (Sandbox Code Playgroud)
更多信息:http://hackage.haskell.org/package/semigroups-0.16.0.1/docs/Data-List-NonEmpty.html
从GHC 8.0.1开始,base现在有一个NonEmpty列表类型Data.List.NonEmpty:
https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List-NonEmpty.html