[GHC] #8961: Require PatternSynonyms language extension to *use* pattern synonyms
GHC
ghc-devs at haskell.org
Mon Apr 7 19:44:53 UTC 2014
#8961: Require PatternSynonyms language extension to *use* pattern synonyms
-------------------------------------+-------------------------------------
Reporter: cactus | Owner: cactus
Type: bug | Status: closed
Priority: normal | Milestone: 7.8.1
Component: Compiler (Type | Version: 7.8.1-rc2
checker) | Keywords:
Resolution: fixed | Architecture: Unknown/Multiple
Operating System: Unknown/Multiple | Difficulty: Easy (less than 1
Type of failure: None/Unknown | hour)
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+-------------------------------------
Comment (by simonpj):
I was sceptical too. GHC's general convention is to require an extension
at the ''definition'' site of something, but not its ''use'' site. For
example, you can use a kind-polymorphic type constructor without
`PolyKinds`; and you can use overlapping instances without
`OverlappingInstances`.
Really the only justification for not following this convention is if it's
going to be hard for the user to understand what's going on. For example,
a uni-directional pattern synonym can be used in a pattern but not an
expression, and that would be puzzling if you had no idea that `K` is a
pattern synonym. Also pattern matching on a pattern synonym might be much
more expensive than pattern matching on a data constructor. And that kind
of thing was the justification for #2905.
FWIW, my own instinct is ''not'' to require `PatternSynonyms` at the use
site; but I didn't feel strongly about it to reverse the choice. And it's
easier to lift the restriction later than to add it.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8961#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list