[Haskell-cafe] Are newtypes optimised and how much?

James Andrew Cook mokus at deepbondi.net
Wed Oct 20 16:08:57 EDT 2010


On Oct 20, 2010, at 11:58 AM, Gregory Crosswhite <gcross at phys.washington.edu> wrote:

> On 10/20/10 4:09 AM, Simon Peyton-Jones wrote:
>> No, this isn't optimised.  The trouble is that you write (map Foo xs), but GHC doesn't know about 'map'.  We could add a special case for map, but then you'd soon want (mapTree Foo my_tree).
> 
> How about a special case for fmap?  That seems like it should handle a lot of cases.
> 

Or even better, a special handling of 'id' in rules pragmas that would cause any rule matching id to also match any newtype constructor or projection. Or have the compiler automatically add rules that map all newtype wrappers and unwrappers to unsafeCoerce and make sure that unsafeCoerce has rules for map, fmap, (.), etc.

--James


More information about the Haskell-Cafe mailing list