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
ため、ヘッドが 1 つしかない場合にすべてのヘッドを反復処理する関数を作成しても意味がありません。それでは、なぜ関数ではないのprefixes
でしょうか?- この関数を末尾再帰にすることはできないため、無視することをお勧めします。
- だめです(ですよね?)
- 関数型プログラミングの哲学と互換性がない (なぜ?)
ご回答ありがとうございます。