<div dir="ltr">On 9 April 2013 01:07, Jacob Carlborg <span dir="ltr"><<a href="mailto:doob@me.com" target="_blank">doob@me.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 2013-04-08 14:52, Iain Buclaw wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 8 April 2013 13:25, Jacob Carlborg <<a href="mailto:doob@me.com" target="_blank">doob@me.com</a> <mailto:<a href="mailto:doob@me.com" target="_blank">doob@me.com</a>>><div><div class="h5"><br>
wrote:<br>
<br>
    On 2013-04-08 10:29, Iain Buclaw wrote:<br>
<br>
        This information could possibly be helpful.  Though given that<br>
        most of<br>
        (gdc) codegen is on par with g++, there's probably not much on<br>
        the list<br>
        that isn't already detected by the backend optimisation passes.<br>
<br>
<br>
    Multiple calls to pure functions could be cached.<br>
<br>
    --<br>
    /Jacob Carlborg<br>
<br>
<br></div></div><div class="im">
Not always, but in some circumstances, yes.<br>
<br>
---<br>
struct Foo<br>
{<br>
   int a = 0;<br>
   pure int bar (immutable int x)<br>
   {<br>
     ++a;<br>
     return x * 2;<br>
   }<br>
}<br>
<br>
<br>
void main()<br>
{<br>
   Foo f;<br>
   int i = f.bar(2) + f.bar(2);<br>
<br>
   assert (i == 8);<br>
   assert (f.a == 2);<br>
}<br>
</div></blockquote>
<br>
I though that wasn't possible. What's the point of pure if that's possible?</blockquote><div><br></div><div style>Precisely >_<</div></div></div></div>