Conal

Is it possible to apply GHC rewrite rules to class methods?

Not currently.  See https://ghc.haskell.org/trac/ghc/ticket/11688, esp 
comment:7 which gives links to similar examples.  
https://ghc.haskell.org/trac/ghc/ticket/10528 comment:13  gives more background.

It’d be great if someone wanted to think through all this.

Simon

From: Glasgow-haskell-users [mailto:glasgow-haskell-users-boun...@haskell.org] 
On Behalf Of Conal Elliott
Sent: 17 November 2016 16:40
To: glasgow-haskell-users@haskell.org
Subject: GHC rewrite rules for class operations & laws


Is it possible to apply GHC rewrite rules to class methods? From what I’ve read 
and seen, class methods get eliminated early by automatically-generated rules. 
Is there really no way to postpone such inlining until a later simplifier 
stage? The GHC Users Guide docs say 
no<https://na01.safelinks.protection.outlook.com/?url=https:%2F%2Fdownloads.haskell.org%2F~ghc%2Flatest%2Fdocs%2Fhtml%2Fusers_guide%2Fglasgow_exts.html%23how-rules-interact-with-class-methods&data=02%7C01%7Csimonpj%40microsoft.com%7C8678611c4c57499f97be08d40f08662a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636149976146128136&sdata=GjkFhlWdNkT6eo85FvcLKkJYoir7Dui9xJ9kMTYKVmU%3D&reserved=0>,
 and suggests instead giving a duplicate vocabulary with somewhat awkward names 
for class methods. I’ve not seen this practice in libraries. I gather that we 
cannot therefore use class laws as optimizations in the form of rewrite rules, 
which seems a terrible loss.

In Control.Category and Control.Arrow, I see rules for class laws but also 
header comments saying “The RULES for the methods of class Arrow may never fire 
e.g. compose/arr; see Trac #10528”.

I’d appreciate a reality check about my conclusions as well as any strategies 
for using class laws in optimization.

Thanks, -- Conal
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users

Reply via email to