Hi, On Tue, Oct 8, 2013 at 3:21 AM, Richard Eisenberg <e...@cis.upenn.edu> wrote:
> We considered this for a while, but it led to a strange design -- to do it > right, you would have to import all constructors for all datatypes > *recursively* out to the leaves, starting at the datatypes mentioned in the > class for which you wanted to use GND. This would mean potentially a whole > lot of imports for symbols not actually used in the text of a program. > I'm not sure I understand why constructors are involved in this. Wouldn't something like the following potentially be useful? data Role = Nominal | Representational | Phantom | Fun Role Role type family HasRole (t :: k) :: Role data MyData a b = MyData a data MyGADT a b where MyGADT :: MyGADT a Int type instance HasRole MyData = Fun Representational Phantom type instance HasRole MyGADT = Fun Representational Nominal type instance HasRole Traversable = Nominal HasRole instances would be automatically given by GHC. Cheers, Pedro
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users