Search code examples
scalascala-catskind-projector

What is the meaning of * in the tests?


In the tests of cats, * occurs as a type parameter, for example, here:

checkAll("Nested[Eval, List, *]", DeferTests[Nested[Eval, List, *]].defer[Int])

(See https://github.com/typelevel/cats/blob/master/tests/src/test/scala/cats/tests/NestedSuite.scala#L19)

I know that the compiler translates it to a type level function, but why? Where is it defined? Is it part of the language specification or part of cats (or one of it's dependencies)?


Solution

  • It's kind-projector compiler plugin that translates types with stars to type lambdas

    https://github.com/typelevel/kind-projector

    Former syntax was with question marks, current one is with stars.