In a previous question I asked Why can the Monad interface not be declared in Java?. There, I received a comment from Brian Goetz saying that I should have called "higher order types" "higher kinded types".
Now, I read more about type systems and I understand the concept of higher kinded types. However, I am still confused by the terms. I tried to disambiguate them by myself using Google, however there does not seem to be a clear answer. Thus, my question is what is the exact meaning of the following terms:
- higher order type
- higher kinded type
- higher order kind
Do all three terms exist? Is there a difference between them? What is the difference? Does the meaning vary between programming languages?
I also noticed that StackOverflow has multiple tags:
However, there is no tag wiki for both of them.