По сути то же самое, что и решение Rex Kerr, но использует fold
от Scalaz, чтобы сделать его немного более кратким.
В общем, x.fold(f, g)
≡ x.map(f).getOrElse(g)
.
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._
scala> a.fold(b.filter, b)
res112: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100)