106 | | * A typo with a rank-n kind could be very confusing, e.g. |

107 | | |

108 | | {{{ |

109 | | #!text/x-haskell |

110 | | f :: forall (m :: k -> (forall k . k' -> *)) |

111 | | }}} |

112 | | |

113 | | |

| 106 | Just occasionally, a Haskell program ''needs'' an explicit kind signature, because the defaulting mechanism makes the wrong choice: |

| 107 | {{{ |

| 108 | data T m = MkT -- m defaults to (m::*) |

| 109 | }}} |

| 110 | Suppose you really wanted |

| 111 | {{{ |

| 112 | data T (m::*->*) = MkT |

| 113 | }}} |

| 114 | Question: could the same thing happen at the next level up, so that we want explicit sort signatures? And if so, does that mean we need explicit binding sites for kind variables? |