Скажем, мы имеем функцию:
def bar[F[_], A](x: F[A], y: F[A]) = null
Все следующие действия ясны:
bar(List(1, 2, 3), List(1)) // compile ok
bar(List(1), Some(1)) // doesn't compile
Но,
bar(1, List(1)) // compile ok
bar(1, 1) // compile ok
Почему?
P.S. пример из FSiS Part 1 - Конструкторы типов, функторы и вид проектора