更高种类的类型和无标签最终

Higher kinded type and Tagless final

我正在尝试编写一个可以采用任何无标记最终特征和 return F[String].

的函数
def apply[Api[F[_]]](implementation: Api[F[_]]): F[String] = ???

我不明白为什么上面没有编译。

以下作品。

trait Api[F[_]]

def apply[F[_]](implementation: Api[F[_]]): F[String] = ???

但是我怎样才能摆脱这个特征呢?

尝试

def apply[Api[_[_]], F[_]](implementation: Api[F]): F[String] = ???

当你写 apply[Api[F[_]]](..) 时你不声明 ApiF,你只声明 Api。那里F无所谓,你可以写apply[Api[F[_]]](..)或者apply[Api[G[_]]](..)或者就写apply[Api[_[_]]](..),反正你不能在外面用F

Api[F[_]] 是类型参数声明中的正确语法,在类型位置的类型应用中你应该写 Api[F].