<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>We can easily add this function to ghc-bignum.</p>
    <p>I've opened <a class="moz-txt-link-freetext" href="https://gitlab.haskell.org/ghc/ghc/-/issues/18697">https://gitlab.haskell.org/ghc/ghc/-/issues/18697</a> to
      track this.</p>
    <p>Sylvain<br>
    </p>
    <div class="moz-cite-prefix">On 16/09/2020 04:19, Keith wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:031AB6E2-E74F-47CA-944D-B92312474577@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      The short of it is,<br>
      <br>
      clampNaturalToWord :: Natural → Word<br>
      clampNaturalToWord n = case n of<br>
      NatS# w -> W# w<br>
      _ -> maxBound<br>
      <br>
      results in much better space and time use than naturalToWord,
      which always takes the least significant Word of the Natural.<br>
      <br>
      <br>
      Because naturalToWord takes the least significant Word, you always
      have to check for size before conversion. Even though you do
      check, GHC has to assume that, after conversion, the big Natural
      could have resulted in a small Word and will uselessly duplicate
      all branches for both cases.<br>
      <br>
      Is there anything wrong with clamping by default in this case?<br>
      <br>
      --Keith<br>
      <br>
      Sent from my phone with K-9 Mail.
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Libraries mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Libraries@haskell.org">Libraries@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
    </blockquote>
  </body>
</html>