永久地在无限流循环上转置

时间:2013-06-14 19:39:04

标签: scala lazy-evaluation scala-collections

请考虑以下事项:

Stream.continually(List(1,2,3)).transpose

您希望获得与以下内容相同的内容:

Stream(
  Stream.continually(1),
  Stream.continually(2),
  Stream.continually(3)
)

然而,上层构造无限循环。这有解决方法吗?这被认为是一个错误吗?

问题出现了讨论this answer

修改

我知道像这样的函数可写,请参阅以下示例。但图书馆里有什么东西吗?

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))
}

0 个答案:

没有答案