更高种类的类型和无标签最终
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[_]]](..)
时你不声明 Api
和 F
,你只声明 Api
。那里F
无所谓,你可以写apply[Api[F[_]]](..)
或者apply[Api[G[_]]](..)
或者就写apply[Api[_[_]]](..)
,反正你不能在外面用F
。
Api[F[_]]
是类型参数声明中的正确语法,在类型位置的类型应用中你应该写 Api[F]
.
我正在尝试编写一个可以采用任何无标记最终特征和 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[_]]](..)
时你不声明 Api
和 F
,你只声明 Api
。那里F
无所谓,你可以写apply[Api[F[_]]](..)
或者apply[Api[G[_]]](..)
或者就写apply[Api[_[_]]](..)
,反正你不能在外面用F
。
Api[F[_]]
是类型参数声明中的正确语法,在类型位置的类型应用中你应该写 Api[F]
.