
#12029: Notify user to import * from Data.Kind with TypeInType on -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: feature request | Status: new Priority: lowest | Milestone: Component: GHCi | Version: 8.1 Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): Thanks, John, for looking into this. * `*` is not (yet) deprecated. While I did work with the larger community to come up with the name `Type`, I don't recall getting specific support for deprecating `*`. I do think this is a good direction of travel, but I don't think we should do this without more of a community mandate. * There are no kind synonyms in GHC 7.10 or below. Thus, according to the [https://prime.haskell.org/wiki/Libraries/3-Release-Policy three-release policy] (which isn't a formal operating policy of GHC, I don't think) we should wait until 8.4 before starting to deprecate `*`. * If the community agrees on moving away from `*`, we could add warnings about `*` to `-Wcompat`. * If the community agrees on moving away from `*`, we could also start changing the pretty-printer to use `Type` instead of `*`. This is not to be done lightly, however. There are several issues here: - Blogs, textbooks, etc., have used `*` for a long time. Furthermore, kinds are hard for newcomers to understand. Changing GHC's output will make this harder. - Until 8.4 comes out, it will be hard for a library author to discover that `*` is the right way to spell `Type` that is compatible with three releases. - The use of `*` as a kind is enshrined in the Haskell Reports. These Reports do not specify the error/warning behavior of a compiler, and so this change is not exactly a deviation from a standard. But it continues to make GHC seem as if it's drifting away from the standard with little remorse. * I personally think we should wait at least 5-6 years before formally disposing of `*`. * `-fprint-unicode-syntax` should use the unicode star for as long as we use `*` in regular output. This should be regardless of context. * I like the `NB`. It's for naive users as John suggests. But it also frequently reminds ''me'' to import `Data.Kind`. Frankly, that's why I added it! Please keep it for several releases. See note about blog posts and textbooks, above. * `*` and the unicode star are just ordinary importable symbols with `-XTypeInType`. Nothing more, nothing less. There is no compiler-aware relationship between the two, other than the fact that both are synonyms for `Type`. * Iceland Jack: You started this ticket. Did you come by the reported infelicity (confusing behavior from `:i *`) "honestly"? By this, I mean were you actually confused by GHC's behavior such that you needed different output to make you not confused? Or did you just notice an inconsistency which is, well, infelicitous? I ask because the treatment of `*` in GHC 8 is very much a dirty hack. I think fixing this bug will make it dirtier. If GHC is truly being confusing, then perhaps this is worth it. But I'm not convinced that fixing this is worth it if we're just doing it for the sake of consistency. (Note: I'm not arguing that the current behavior is the best possible behavior!) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12029#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler