次の点を考慮してください。
Stream.continually(List(1,2,3)).transpose
次と同等のものを取得することが期待されます。
Stream(
Stream.continually(1),
Stream.continually(2),
Stream.continually(3)
)
ただし、上の構造は無限にループします。これに対する回避策はありますか? これはバグと見なされますか?
この答えについて議論する質問が出てきました。
編集
このような関数が書き込み可能であることはわかっています。次の例を参照してください。でも、図書館に何かありますか?
def myTranspose[A,B](in: Stream[A])
(implicit asTraversable: A => GenTraversableOnce[B]): Stream[Stream[B]] = {
val len = asTraversable(in.head).size
for (i <- (0 until len).toStream)
yield in.map(el => asTraversable(el).toIndexedSeq(i))
}