<div dir="ltr">Hello,<div><br></div><div>These are significant changes to the current terminology and I really don't think that this is the right place to discuss them---I think that they are significant enough that they deserve their own proposal, with motivation, and discussion by the community.</div><div><br></div><div>Here are some things to think about, if such a proposal is ever written:</div><div>  * in this new terminology `4` is not a type, but it also does not fall in any of the other categories, so what is it?</div><div>  * how about `Eq`?</div><div>  * how about a type variable `f`?</div><div>  * are type functions really type constructors?</div><div>  * are we really suggesting that we should start supporting things like `'True` at the value level?</div><div><br></div><div>Anyway, it seems to me that we have gone a little off-course, and these changes are not really about making #106 easier to understand.<br></div><div><br></div><div>-Iavor</div><div><br></div><div><div dir="ltr"><div><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 17, 2018 at 6:46 PM Richard Eisenberg <<a href="mailto:rae@cs.brynmawr.edu" target="_blank">rae@cs.brynmawr.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div><br><blockquote type="cite"><div>On Aug 17, 2018, at 3:22 AM, Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a>> wrote:</div><br class="m_2121516729882593434m_2564022485349456278Apple-interchange-newline"><div><span style="font-family:Menlo-Regular;font-size:11px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important">Can you restate the terminological choice(s) as explicitly as possible, with examples?</span><br style="font-family:Menlo-Regular;font-size:11px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"></div></blockquote></div><br></div><div style="word-wrap:break-word;line-break:after-white-space"><div>Old:</div><div><br></div><div>type: Something used at the type level. In contrast to "type constructor", generally doesn't take any arguments. Examples: Int, Bool, 4, 'True, '[Int, Bool], '[]</div><div>type constructor: Something used in a function position in a type. Examples: Maybe, Either, 'Just</div><div>data constructor: A symbol used to construct a data element of some type at runtime. Examples: True, Nothing, Left. Non-examples: 'True, 'Nothing, 'Left.</div><div>promotion: 'True is a type that is the promoted form of the data constructor True; 'Just is a type constructor that is the promoted form of the data constructor Just.</div><div><br></div><div><br></div><div>New:</div><div><br></div><div>type: Something that can reasonably go to the right of a ::. In other words, an element of the kind * (or Type). Examples: Int, Bool, Maybe Double. Non-examples: 4, 'True, '[Int, Bool], '[]</div><div>type constructor: Something that, when applied to the right number of well-kinded arguments, becomes a type. Examples: Maybe, Either. Non-example: 'Just</div><div>data constructor: A symbol used to construct a data element of some type, at either runtime or compile-time. Examples: True, Nothing, Left, 'True, 'Nothing, 'Left.</div><div>promotion: No longer used. 'True and True are now the same thing: both data constructors, just used in different contexts.</div><div><br></div><div><br></div><div>NB: This is all about user-facing documentation. I am not proposing any change to GHC datatypes.</div></div><div style="word-wrap:break-word;line-break:after-white-space"><div><br></div><div>I hope this helps!</div><div>Richard</div></div>_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div></div></div></div></div>