Что означает * в тестах?
В тестах кошек, *
встречается как параметр типа, например, здесь:
checkAll("Nested[Eval, List, *]", DeferTests[Nested[Eval, List, *]].defer[Int])
(См. https://github.com/typelevel/cats/blob/master/tests/src/test/scala/cats/tests/NestedSuite.scala)
Я знаю, что компилятор переводит это в функцию уровня типа, но почему? Где это определяется? Это часть спецификации языка или часть кошек (или одна из ее зависимостей)?
1 ответ
Решение
Это плагин для компилятора kind-Projector, который переводит типы со звездочками в лямбды.
https://github.com/typelevel/kind-projector
Прежний синтаксис был с вопросительными знаками, текущий - со звездочками.