We need to add role annotations for 7.8
Richard Eisenberg
eir at cis.upenn.edu
Thu Mar 13 20:12:54 UTC 2014
This is not shipped with GHC. Johan, as the maintainer of unordered-containers, would you be able to use my patch to be able to do this on your end?
Thanks,
Richard
On Mar 13, 2014, at 2:50 PM, Edward Kmett <ekmett at gmail.com> wrote:
> That looks correct to me. Analogously for HashMap in unordered-containers of course.
>
>
> On Thu, Mar 13, 2014 at 2:49 PM, Johan Tibell <johan.tibell at gmail.com> wrote:
> If you send a pull request for containers I'll merge it and make a release. It needs to be backwards compatible with the last 3 major GHC releases. I think we need to bump the minor version number so people can reliable write dependency bounds to depend on the role being there (as that might be the difference between code compiling or not).
>
> Here's a guess which params should be representational:
>
> Map k v -- k: nominal, v: represententional
> Set a -- k: nominal
> IntMap v -- v: represententional
> Sequence a -- a: represententional
> Tree a -- a: represententional
>
>
> On Thu, Mar 13, 2014 at 7:41 PM, Richard Eisenberg <eir at cis.upenn.edu> wrote:
> Hi libraries, Johan, Edward,
>
> tl;dr: We really should add role annotations to the libraries that ship with GHC 7.8.
>
> In November, I sent this out: http://www.haskell.org/pipermail/libraries/2013-November/021707.html
> It got several good responses. Some time later, Joachim and I noticed that no action was taken, so we made a bug report, #8718, with a milestone of 7.8.1. I believe we both assumed that would take care of it. However, Simon PJ and I were surprised earlier this week to discover that Map and Set still do not have role annotations. Perhaps the GHC Trac isn't the right place for libraries issues, but posting here didn't quite work, so that seemed like the logical next step.
>
> In any case, now that we have the ability to prevent abuses of datatypes like Map and Set through erroneous use of GeneralizedNewtypeDeriving (and the new `coerce`), we should take advantage of this fact for 7.8. See my earlier email for a full explanation.
>
> Possibly folks' unfamiliarity with roles are in part to blame for not adding these role annotations. I am happy to help sort out what goes where. But, I need to work with someone with an intimate familiarity with the libraries themselves to help determine what the correct annotations are. For example, Map's first parameter should be nominal (its Ord instance is very relevant) but its second should be representational (there are no particular invariants related to the values of a map). Map is straightforward in this respect; other types probably aren't. Furthermore, I don't have anywhere near a complete list of what even needs attention. (It should be any type abstractly exported from a library.)
>
> Can someone help? I've included Johan as the most recent uploader of `containers` and Edward as the head of the core libraries committee.
>
> Thanks!
> Richard
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140313/b6766197/attachment-0001.html>
More information about the Libraries
mailing list