[ghc-steering-committee] Proposal: Embrace Type in Type

Iavor Diatchki iavor.diatchki at gmail.com
Thu Jan 25 21:45:07 UTC 2018


Hello,

I am the shepherd for pull request #83 "Embrace Type in Type" (
https://github.com/ghc-proposals/ghc-proposals/pull/83), and so I'd like to
hear your thoughts about the proposal.

In short, the proposal has two parts:
   1. Deprecate the use of `*` for the kind of inhabited Haskell types, and
replace it with `Type`.
   2. Deprecate extension `TypeInType`, and move its functionality to
extension `PolyKinds`.

At first I was quite skeptical about both of these, but after some thought
I've realized that most of my concerns are not so much about Type in Type,
but rather about the data promotion mechanism, and so I won't discuss them
in this e-mail.

As such, I think I would be OK with part 2.  In particular, I like that
when using TypeInType, one is explicit about kind parameters, as the
implicit parameters of `PolyKinds` can be quite confusing.  Technically,
being explicit about kind parameters is an orthogonal issue to mixing up
types and kinds, but this is where we are at the moment, and I think
`PolyKinds` is probably more useful with `TypeInType`.

Part 1 of the proposal is obviously just a syntactic thing, but I am a bit
concerned about it.  In part because I actually tried for a while to use
`Type` instead of `*`, and I found that the resulting kind signatures
looked much more complicated.    Quite possibly this is because I am very
used to using `*` and eventually I would adjust, but things just ended up
being much longer.  It also seems unfortunate that this would break quite a
lot of code, and obsolete a bunch of documentation and tutorials online.

So while I understand the reason for the proposal (the confusion between
`*` the type function, and `*` the kind), I am not very keen on making this
change.   The proposal also suggests another extension, `StarIsType`, and
when enabled `*` will always refer to the kind, and never to the type
function.  I am even less keen about this option, as I think it is better
to pick a single notation and stick with it.

I'd love to hear what others think!

-Iavor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20180125/04a3ad70/attachment.html>


More information about the ghc-steering-committee mailing list