While going through Scala Specification, Topic 3 about Types, I came across this > "We distinguish between first-order types and type constructors, which take type parameters and yield types."
With this my assumption is First-order types are parameterized types that takes only one type to be applied and become concrete. ex:
List[A] that can take only one argument i.e. Int and become concrete type List[Int], while Type constructors can be of higher order(Higher-kinded Types) like Container that can take a List as a Parameter and can be used like:
trait Traversable[Container, T]
new Traversable(List, Int) that is going to create a List[Int] that is of Traversable type.
I would like to clarify if my assumption is right, also would like to know more about this specific term “first-order types” as this is discussed in Specification but nowhere it’s clear. The scope of it. Tried googling the same to get legitimate source to understand but couldn’t.