title: Difference between F[_] and F[T] In Scala when used in type constructors
body: <p>This question is about _ as used in type constructor and not when used in defining existential types.</p>
  
  <p>So the question is what is the difference when <code>_</code> is used as type parameter instead of a variable like <code>T</code>. For example difference between <code>F[_]</code> and <code>F[T]</code>. </p>
  
  <p>The only difference I can think of is that with <code>F[_]</code> the parameter itself can have as many holes as possible...that is <code>F[_]</code> can become <code>F[Int]</code> or <code>F[Future[Option[Int]]]</code> etc...while when you have <code>F[T]</code> the <code>T</code> can only be a proper type...that is <code>F[String]</code> or <code>F[Int]</code> etc.</p>
  
  <p>Is this a correct assumption? and is that the main difference between <code>F[_]</code> and <code>F[T]</code>? or there are more?</p>
  
  <p>What about the case where the two are used as type parameters? For example, what is the difference between <code>trait Functor [F[_]]</code> and <code>trait Functor [F[T]]</code>?</p>
  
  <p>Is there any semantic difference if the functor trait is defined as <code>trait Functor [F[_]]</code> instead of <code>trait Functor [F[T]]</code>?</p>