Hi everyone,_______________________________________________I was asked to shepherd the proposal #167 (Deprecated Entities, https://github.com/nineonine/ghc-proposals/blob/depr-entities/proposals/0000-deprecated-entities.rst). 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:
data Bar = Bar{-# DEPRECATED type Bar "Don't use type Bar" #-}data Baz = Baz{-# DEPRECATED pattern Baz "Don't use data constructor Baz" #-}
Using this pragma without specifiers should mean deprecating both (as is works now).After discussing this proposal within the committee (see https://mail.haskell.org/pipermail/ghc-steering-committee/2019-February/000894.html), I recommend acceptance with one change, namely using "data" instead of "pattern" for deprecating value-level things.Reasons for choosing "data":* it's a reserved keyword (as opposed to "value", which is another option)* we are deprecating data constructors here* it just feels right (sorry!)Reasons against "data":* it can be confusing whether we mean data type or data constructor* we use "value" and "pattern" in other places meaning basically the same thingIf the committee decides to go this way, then the wider community may think about other proposals, such as* adding positional DEPRECATED pragmas (including class instances deprecation)* fixing inconsistencies with the fixity declarations (https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0008-type-infix.rst) and updating ExplicitNamespaces in import/export lists* deprecating usage of nonpositional DEPRECATED pragma without the specifiersSilence is understood as agreement.Regards,Vitaly
ghc-steering-committee mailing list
ghc-steering-committee@haskell.org
https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee