<div dir="ltr"><div>Yes, I think this is the right way to go.</div><div><br></div><div>Cheers</div><div>Simon<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 8 Mar 2019 at 05:25, Vitaly Bragilevsky <<a href="mailto:bravit111@gmail.com">bravit111@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi everyone, <div><br></div><div>I was asked to shepherd the proposal #167 (Deprecated Entities, <a href="https://github.com/nineonine/ghc-proposals/blob/depr-entities/proposals/0000-deprecated-entities.rst" target="_blank">https://github.com/nineonine/ghc-proposals/blob/depr-entities/proposals/0000-deprecated-entities.rst</a>). It is proposed to extend (nonpositional) DEPRECATED pragma with the two specifiers to disambiguate deprecating named type-level and value-level things. In its current formulation, the proposal suggests to use the specifiers "type" for type-level things and "pattern" for value-level things as follows:<br><br>data Bar = Bar</div><div>{-# DEPRECATED type Bar "Don't use type Bar" #-} </div><div>data Baz = Baz<br></div><div>{-# DEPRECATED pattern Baz "Don't use data constructor Baz" #-}<br><br>Using this pragma without specifiers should mean deprecating both (as is works now).</div><div><br></div><div>After discussing this proposal within the committee (see <a href="https://mail.haskell.org/pipermail/ghc-steering-committee/2019-February/000894.html" target="_blank">https://mail.haskell.org/pipermail/ghc-steering-committee/2019-February/000894.html</a>), I recommend acceptance with one change, namely using "data" instead of "pattern" for deprecating value-level things. </div><div><br></div><div>Reasons for choosing "data":</div><div>* it's a reserved keyword (as opposed to "value", which is another option)</div><div>* we are deprecating data constructors here<br></div><div>* it just feels right (sorry!)</div><div><br></div><div>Reasons against "data":</div><div>* it can be confusing whether we mean data type or data constructor</div><div>* we use "value" and "pattern" in other places meaning basically the same thing</div><div><br></div><div>If the committee decides to go this way, then the wider community may think about other proposals, such as</div><div>* adding positional DEPRECATED pragmas (including class instances deprecation)</div><div>* fixing inconsistencies with the fixity declarations (<a href="https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0008-type-infix.rst" target="_blank">https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0008-type-infix.rst</a>) and updating ExplicitNamespaces in import/export lists</div><div>* deprecating usage of nonpositional DEPRECATED pragma without the specifiers</div><div><br></div><div>Silence is understood as agreement. <br></div><div><br></div><div>Regards, </div><div>Vitaly<br><br><br></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>