<div dir="ltr">The "INLINABLE" pragma's name is misleading, it is more like "SPECIALISABLE". Consider the documentation for INLINABLE:<div><br></div><div><p style="margin:0.8em 0px;padding:0px;color:rgb(0,0,0);font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:medium;text-align:left;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Top-level definitions can be marked<span> </span><code style="margin:0px;padding:0px;font-family:monospace;line-height:16.12px;background:rgb(240,240,240)">INLINABLE</code>.</p><pre class="gmail-haskell" style="margin:0px 0px 0px 1em;padding:0.3em;font-family:monospace;line-height:1.2;overflow:auto;background:rgb(240,240,240);border:1px solid rgb(221,221,221);color:rgb(0,0,0);text-align:left;text-decoration-style:initial;text-decoration-color:initial">myComplicatedFunction :: (Show a, Num a) => ...
myComplicatedFunction = ...

{-# INLINABLE myComplicatedFunction #-}</pre><p style="margin:0.8em 0px;padding:0px;color:rgb(0,0,0);font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:medium;text-align:left;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">This causes exactly two things to happens.</p><ol style="margin:0.8em 0px 0.8em 2em;padding:0px;color:rgb(0,0,0);font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:medium;text-align:left;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><li style="margin:0px;padding:0px">The function's (exact) definition is included in the interface file for the module.</li><li style="margin:0px;padding:0px">The function will be specialised at use sites -- even across modules.</li></ol><p style="margin:0.8em 0px;padding:0px;color:rgb(0,0,0);font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:medium;text-align:left;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Note that GHC is no more keen to inline an<span> </span><code style="margin:0px;padding:0px;font-family:monospace;line-height:16.12px;background:rgb(240,240,240)">INLINABLE</code><span> </span>function than any other.</p>I propose that we deprecate "INLINABLE" over a number of years at the same time as introducing "SPECIALISABLE". This wouldn't cause breakages for a long time.</div></div>