更高类型和无标签最终

Joa*_*oan 0 scala tagless-final

我正在尝试编写一个可以采用任何无标记最终特征并返回的函数F[String]

def apply[Api[F[_]]](implementation: Api[F[_]]): F[String] = ???
Run Code Online (Sandbox Code Playgroud)

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

以下作品。

trait Api[F[_]]

def apply[F[_]](implementation: Api[F[_]]): F[String] = ???
Run Code Online (Sandbox Code Playgroud)

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

Dmy*_*tin 5

尝试

def apply[Api[_[_]], F[_]](implementation: Api[F]): F[String] = ???
Run Code Online (Sandbox Code Playgroud)

当你写的时候,apply[Api[F[_]]](..)你不声明Apiand F,你只声明Api。没关系F,你可以写apply[Api[F[_]]](..)orapply[Api[G[_]]](..)或者 只是apply[Api[_[_]]](..),反正你不能F在外面使用。

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