<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">Dear devs</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">At the moment the INLINEABLE pragma means "capture my right-hand side, regardless of how big it is, so that it can be type-class-specialised, including in other modules".  But it <i>also </i>says "feel free to inline me".</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Some users (eg Gergo) want to say NOINLINE on some functions. But for these they'd still like to generate type-class-specialised versions.  After all, if we aren't going to inline them, specialising is the next best thing.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">But we have no way to say both "specialise me" and "don't inline me", because you can't say both INLINEABLE and NOINLINE.  (That would look silly.)</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">I think we should probably just bite the bullet and add a SPECIALISABLE pragma, <i>orthogonal to INLINE/NOINLNE</i>, which say 
"capture my right-hand side, regardless of how big it is, so that it can be type-class-specialised, including in other modules".  It behaves exactly like INLINEABLE except that  you can specify it along with INLINE/NOINLINE.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Any thoughts?  Do you think this needs a GHC proposal?</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">See #<a href="https://gitlab.haskell.org/ghc/ghc/-/issues/21036#note_407930">21036 </a><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Simon<br></div></div>