unsplit
它只是
MA#join
,对于任何
M[M[A]]
在哪里?
M
是一个
Monad
.
split
不是现成的。下面是一个关于实现这一点的方法,更多的是演示一些scalaz概念。现在它实际上触发了编译器中的堆栈溢出!
val ls = List(1, 2, 3, 4, 5)
val n = 5
def truesAndFalses(n: Int): Stream[Boolean] =
Stream.continually(true.replicate[Stream](n) |+| false.replicate[Stream](n)).join
val grouped: List[List[Int]] = {
var zipped: List[(Int, Boolean)] = ls.zip(truesAndFalses(2))
var groupedWithBools: List[List[(Int, Boolean)]] = zipped splitWith {_._2}
groupedWithBools ââ {pair: (Int, _) => pair._1}
}
val joined: List[Int] = grouped ââ {_ * 2} join