(для версии со стрелкой 0.9.1-SNAPSHOT и более ранних версий)
У процессоров Higherkinded Processor и Extension Processor есть зависимость.Правильно, аннотация расширения зависит от кода, сгенерированного аннотацией с более высоким номеромЗачем проверять эту ссылку .
Краткое резюме: всякий раз, когда вы пытаетесь реализовать классы типов, компилятору нужны типы данных Higherkinded для вашего типа данных.
@extension
interface ListKFunctor : Functor<ForListK> {
// ^^^^^^^^
// This exists after building your module
override fun <A, B> Kind<ForListK, A>.map(f: (A) -> B): Kind<ForListK, B> {
return this.fix().map(f)
}
}
Простейший ответ на этот вопрос:
Always separate your Higherkinded Types from your typeclass definitions.
Но Эрроу экспериментирует с другими вариантами на Codegen.Смысл в будущих выпусках эта проблема будет решена.