On 1/14/13 1:09 PM, Simon Peyton-Jones wrote:
Friends

I'd like to propose a way to "promote" newtypes over their enclosing type.  
Here's the writeup
           http://hackage.haskell.org/trac/ghc/wiki/NewtypeWrappers

Any comments?  Below is the problem statement, taken from the above page.

I'd appreciate

*         A sense of whether you care. Does this matter?

I care. So far I've gotten around some of the problems by defining rewrite rules which take (fmap NT), (fmap unNT), etc into unsafeCoerce. I haven't run into the eta problems that I'm aware of, but the non-constant-time maps are something that shows up quite a lot.

I'd prefer the second approach since it's cleaner to programmers: No new syntax; no namespace pollution. The one problem I could see is that there's no way to restrict export of the NTC instance, which may be necessary for correctness when the constructors aren't exported due to invariants...

*         Improvements to the design I propose

I'd suggest the name newtypeCoerce (to match unsafeCoerce) rather than newtypeCast. The "casting" terminology isn't terribly common in Haskell (I don't think).

--
Live well,
~wren

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to