If I have something like a List[Option[A]] and I want to convert this into a List[A], the standard way is to use flatMap:
There's an identity function in Predef.
l flatMap identity[Option[String]]
> List[String] = List(Hello, World)
A for expresion is nicer, I suppose:
for(x <- l; y <- x) yield y
Edit:
I tried to figure out why the the type parameter (Option[String]) is needed. The problem seems to be the type conversion from Option[T] to Iterable[T].
If you define the identity function as:
l.flatMap( x => Option.option2Iterable(identity(x)))
the type parameter can be omitted.