Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

4
  • 3
    You can work with DataKinds, if you then define a data Foo = Foo Nat for example, you can define a type type Bar = Foo 42, and Bar has kind Foo. Commented Feb 12, 2022 at 9:38
  • 6
    Even restricting ourselves to the * kind (also known as Type) the kinds * -> * -> * and (* -> *) -> * wouldn't be the same.
    – danidiaz
    Commented Feb 12, 2022 at 10:05
  • 1
    Nat is for example a kind that allows to use natural numbers as kind. Commented Feb 12, 2022 at 10:08
  • 3
    as a common example of what @danidiaz mentions, Monad Transformers are very widely used in "real world" Haskell, and such transformers, eg MaybeT, have kind (* -> *) -> * -> *. Commented Feb 12, 2022 at 13:13