<br><br><div class="gmail_quote">On Thu, Nov 5, 2009 at 6:15 PM, brian <span dir="ltr">&lt;<a href="mailto:briand@aracnet.com">briand@aracnet.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
On Nov 5, 2009, at 8:26 AM, Jason Dagit wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
Haskell knows when I have a list of Doubles, you know, because it&#39;s strongly typed.<br>
<br>
Then it proceeds to box them. Huh ?<br>
<br>
Imagine a computation which will yield a Double if evaluated, but has not yet been evaluated.   How do you store that in the list?<br>
<br>
</blockquote>
<br></div>
So laziness is causing the boxing to be necessary ?<br>
<br>
</blockquote><div><br>&quot;Necessary&quot; is a strong word within formal/mathematical communities.  If you mean it in that sense, then I&#39;m not sure it&#39;s necessary.  My (incomplete) understanding is that no one has a better way than boxing that has as wide applicability as boxing.  Perhaps there are techniques that work better.  My guess is that they are either 1) special cases; or 2) have yet to be discovered.  I wonder if perhaps supercompilation or perhaps whole program optimizations will eventually be able to eliminate much of the boxing we have today.  Strictness analysis has done a lot to remove boxing but it is not perfect due to the halting problem.<br>
<br>Jason<br></div></div>