mapしてflattenするなら、flatMap // bad .map { ... }.flatten // good .flatMap { ... } filterしてmapするなら、collect // bad .filter { ... }.map { ... } // good .collect { ... } mapしてreverseするなら、reverseMap // bad .map { ... }.reverse // good .reverseMap { ... } flatMap内でmapするなら、for 例えば、List[Option[A]]のようなありがちな構造に何かするとき // not bad.. l.flatMap { o => o.map(_ * 2) } // good! for { o <- l i <- o } yield i * 2 さらにfilt