(Adding ghc-devs, who will, I hope, have opinions)

I'm sympathetic to this.  In general our story for pragmas {-# blah #-} is that 
they affect only optimisation (eg INLINE) or warnings (eg DEPRECATED).  You can 
ignore/leave them out. But here you really can't.  Well, I suppose leaving out 
the annotation does not risk soundness (as in run-time seg-fault); it just 
risks sets being ordered wrong.

I don't have a strong opinion here.

You could also imagine other syntaxes e.g.
                data Set a(role N) = ...
I suppose.

You are right that we need to get this nailed for 7.8, so we don't end up 
changing it later.

Simon



From: Richard Eisenberg [mailto:e...@cis.upenn.edu]
Sent: 23 August 2013 05:52
To: Simon Peyton-Jones; Dimitrios Vytiniotis; Stephanie Weirich
Subject: concrete syntax for role annotations

Hi all,

On a Reddit discussion of my recent blog post on roles 
(http://www.reddit.com/r/haskell/comments/1kgivs/roles_a_new_feature_of_ghc_patch_gnd_type_families/),
 it was suggested that a better syntax is available for specifying role 
annotations.

Currently, I've implemented

> data Set a@N = ...

to mark Set's parameter's role as N. The suggested syntax is

> data Set a {-# ROLE N #-} = ...

This suggested syntax is certainly much more verbose, but it's fully 
backwards-compatible, avoiding the need for preprocessing statements in 
libraries. These annotations should hopefully be few and far between, and I 
just think it's worth considering the backwards-compatible syntax before 7.8 is 
released and we're stuck.

What do we think? Should I forward the question to glasgow-haskell-users, 
perhaps?

Richard
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to