Попробуйте
def apply[Api[_[_]], F[_]](implementation: Api[F]): F[String] = ???
Когда вы пишете apply[Api[F[_]]](..)
, вы не объявляете Api
и F
, вы объявляете только Api
.Там F
не имеет значения, вы можете написать apply[Api[F[_]]](..)
или apply[Api[G[_]]](..)
или просто apply[Api[_[_]]](..)
, в любом случае вы не можете использовать F
снаружи.
Api[F[_]]
- правильный синтаксис в объявлениипараметра типа, в приложении типа в позиции типа вы должны написать Api[F]
.