Scalaz.NonEmptyList 对比 Scala.List?

Scalaz.NonEmptyList vs Scala.List?

有人可以解释为什么我应该使用 Scalaz 的 NonEmptyList 而不是 Scala 的 List 吗?

在不可变的应用程序中,创建一个空的 List

没有多大意义
  1. 那么我应该在不可变应用程序中始终使用 NonEmptyList 吗?
  2. 为什么我还要使用 scalaz 的 NonEmptyList 而不是 scala 的 List,而不是它保证列表中至少有一个元素的明显原因?

Scala 的集合有很多不安全的方法。这些包括 head、last 等。不安全意味着如果集合为空,它们将抛出异常。现在你可以说 "I am really sure this collection will not be empty at runtime, so my code is safe"。但是,有人出现,更改了您的代码等

因此,从本质上讲,scalaz 类型为您提供了静态安全性,因为如果您静态地知道集合不会为空,那么调用 head 等是安全的。