Avoiding construction of dead dictionaries

Simon Peyton Jones simonpj at microsoft.com
Mon Aug 9 16:05:30 UTC 2021


Hi Mike

|  The right-hand argument of <+ leads to a dictionary construction that is a
|  proof of a certain property, but the dictionary itself ends up being dead,
|  like so:
|  
|        case $w$dOpCon_r2kGJ ...
|        of
|        { (# ww1_s27L3 #) -> ... }
|             ^^^^^^^^^
|             never used

GHC needs to figure out that $w$dOpCon_r2kGJ always terminates, without throwing an exception etc.  That can't be too hard, and Sebastian Graf has thought about it quite a bit.

Could you offer a small repro case, with a pointer to evidence that it matters in practice, and open a ticket?

Thanks

Simon

|  -----Original Message-----
|  From: Glasgow-haskell-users <glasgow-haskell-users-bounces at haskell.org> On
|  Behalf Of Michael Sperber
|  Sent: 06 August 2021 14:06
|  To: glasgow-haskell-users at haskell.org
|  Subject: Avoiding construction of dead dictionaries
|  
|  [You don't often get email from sperber at deinprogramm.de. Learn why this is
|  important at http://aka.ms/LearnAboutSenderIdentification.]
|  
|  I have another optimization problem.  ConCat includes this definition:
|  
|  (<+) :: Con a => (Con b => r) -> (a |- b) -> r r <+ Entail (Sub Dict) = r
|  
|  The right-hand argument of <+ leads to a dictionary construction that is a
|  proof of a certain property, but the dictionary itself ends up being dead,
|  like so:
|  
|        case $w$dOpCon_r2kGJ ...
|        of
|        { (# ww1_s27L3 #) -> ... }
|             ^^^^^^^^^
|             never used
|  
|  Yet, ghc (8.10.4) never elides this code.  (I'm naively assuming because of
|  the unboxed tuple, but actually have no clue.)
|  
|  Is there any chance of convincing ghc of erasing the dictionary
|  construction?
|  
|  Help would be much appreciated!
|  
|  --
|  Regards,
|  Mike
|  
|  _______________________________________________
|  Glasgow-haskell-users mailing list
|  Glasgow-haskell-users at haskell.org
|  https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskel
|  l.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fglasgow-haskell-
|  users&data=04%7C01%7Csimonpj%40microsoft.com%7C301c6f15cc1142fc645908d95
|  8dc725a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637638526127543532%7CUn
|  known%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJX
|  VCI6Mn0%3D%7C2000&sdata=fh2YiJ5NuDMPzpzzxsAL0MyceMFH0MuveNgvTo7ZNow%3D&a
|  mp;reserved=0


More information about the Glasgow-haskell-users mailing list