[GHC] #8185: Change role annotation syntax
GHC
ghc-devs at haskell.org
Mon Sep 9 17:04:05 CEST 2013
#8185: Change role annotation syntax
----------------------------+----------------------------------------------
Reporter: | Owner: goldfire
goldfire | Status: new
Type: feature | Milestone: 7.8.1
request | Version: 7.7
Priority: normal | Keywords:
Component: | Architecture: Unknown/Multiple
Compiler | Difficulty: Moderate (less than a day)
Resolution: | Blocked By:
Operating System: | Related Tickets:
Unknown/Multiple |
Type of failure: |
None/Unknown |
Test Case: |
Blocking: |
----------------------------+----------------------------------------------
Changes (by ekmett):
* cc: ekmett@… (added)
Comment:
Simon,
While I can respect the fact that other pragmas are forgettable without
changing the compilability of the program, the big issue to me here is
that by introducing Roles we're forcing users to choose between backwards
compatibility and compatibility with other compilers, correctness under
GHC and doing the right thing and putting on annotations when they need
invariants.
With a ```{-# ROLE #-}``` pragma users can at least write code that could
work with other compilers without requiring an ```#ifdef``` block around
every container type that provides invariants.
I expect these to be a lot more common than Richard seems to, given that
almost any sort of `Map`, `Set`, `Fingertree` or `Heap`-like data
structure makes use of some invariant about its contents. I've been
compiling a mental checklist of my own packages that will break when this
goes in and it isn't a small list.
It seems to me that this means any package that provides basically any
sort of container is going to have to compile with `#ifdef`, which is a
really ugly consequence of the current syntax.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8185#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list