We can’t currently for/yield over the Sequence class from the last chapter. We’ll have to add a map method to Sequence:

def map[B](f: A => B): Sequence[B] = {
  val abMap: ArrayBuffer[B] elems.map(f)
  Sequence(abMap: _*) //funky syntax
}

_* is an operator used to adapt a collection to a varargs input.

After adding a map, this for comprehension works:

val seq = Sequence(1,2,3)
for {
  i <- seq
} yield i*2

The above just gets converted into a map by the compiler. The foreach we added to Sequence in the last chapter is used for a different for, a for loop.

Hands hurting today so I’m going to take it easy and stop here.