Высший добрый тип и финал Tagless
Я пытаюсь написать функцию, которая может взять любую конечную черту без тега и вернуть F[String]
,
def apply[Api[F[_]]](implementation: Api[F[_]]): F[String] = ???
Я не понимаю, почему выше не компилируется.
Следующие работы.
trait Api[F[_]]
def apply[F[_]](implementation: Api[F[_]]): F[String] = ???
Но как я могу избавиться от этой черты?
1 ответ
Решение
Пытаться
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]
,