<div dir="ltr"><div>The type of 5:<br><br>Prelude&gt; :t 5<br>5 :: Num a =&gt; a<br><br></div>That&#39;s why it works.  The literal&#39;s type uses the type class.  Other fun stuff:<br><br>Prelude&gt; :t &quot;asdf&quot;<br>
&quot;asdf&quot; :: [Char]<br><br>Prelude&gt; :set -XOverloadedStrings<br><br>Prelude&gt; :t &quot;asdf&quot;<br><div class="" id=":wn" style><table class="" tabindex="-1"><tbody><tr><td class=""><div id=":wi" class=""><div class="nr">
<div class=""><span><span></span></span></div></div></div>&quot;asdf&quot; :: Data.String.IsString a =&gt; a<br><br></td></tr></tbody></table></div></div>