我想知道是否有“函数式编程”的原因导致该函数heads
不在 List (或更一般地在TraversableLike)中实现。对我来说,heads
这完全相反,tails
但我必须错过一些东西。
由于 Scala 易于阅读,因此我将看到以下内容(针对该List
案例):
def heads[T](li:List[T]):List[List[T]] = li match {
case Nil => Nil
case head::tail => (Nil::heads(tail)).map(head::_)
}
所以,这里是我想到的不实现这个功能的几种可能性:
head
表示 a 的第一个元素List
,因此如果只有一个,则创建一个遍历所有头的函数是没有意义的。那为什么不是函数prefixes
呢?- 不可能使这个函数尾递归,所以我们宁愿忽略它。
- 它没用(是吗?)
- 它与函数式编程的哲学不兼容(为什么?)
提前感谢您的回答。