Несоответствие типов в Scala для понимания

Почему эта конструкция вызывает ошибку несоответствия типов в Scala?

for (first <- Some(1); second <- List(1,2,3)) yield (first,second)

<console>:6: error: type mismatch;
 found   : List[(Int, Int)]
 required: Option[?]
       for (first <- Some(1); second <- List(1,2,3)) yield (first,second)

Если я переключаю Some со списком, он компилируется нормально:

for (first <- List(1,2,3); second <- Some(1)) yield (first,second)
res41: List[(Int, Int)] = List((1,1), (2,1), (3,1))

Это также отлично работает:

for (first <- Some(1); second <- Some(2)) yield (first,second)
77
задан mikej 22 June 2015 в 19:35
поделиться