A type class that is used to help guide Scala's type inference to
find type class instances for types which have shapes which differ
from what their type classes are looking for.
For example, Functor is defined for types in the shape
F[_]. Scala has no problem finding instance of Functor which match
this shape, such as Functor[Option], Functor[List], etc. There is
also a functor defined for some types which have the Shape F[_,_]
when one of the two 'holes' is fixed. For example. there is a
Functor for Map[A,?] for any A, and for Either[A,?] for any A,
however the Scala compiler will not find them without some coercing.
A type class that is used to help guide Scala's type inference to find type class instances for types which have shapes which differ from what their type classes are looking for.
For example, Functor is defined for types in the shape F[_]. Scala has no problem finding instance of Functor which match this shape, such as Functor[Option], Functor[List], etc. There is also a functor defined for some types which have the Shape F[_,_] when one of the two 'holes' is fixed. For example. there is a Functor for Map[A,?] for any A, and for Either[A,?] for any A, however the Scala compiler will not find them without some coercing.