Wow! That looks sweet. I Imagine this could be put to good use inside template constraints.. or so I think.<br><br>Thumbs up from me.<br><br><div class="gmail_quote">On Tue, Aug 10, 2010 at 6:40 AM, dsimcha <span dir="ltr">&lt;<a href="mailto:dsimcha@yahoo.com">dsimcha@yahoo.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">== Quote from Andrei Alexandrescu (<a href="mailto:SeeWebsiteForEmail@erdani.org">SeeWebsiteForEmail@erdani.org</a>)&#39;s article<br>

<div><div></div><div class="h5">&gt; Chris Williams wrote:<br>
&gt; &gt; I&#39;m not sure whether the design of D 2.0 has stabilized as yet, but if not,<br>
&gt; &gt; I would like to suggest the ability to create custom block types.<br>
&gt; [snip]<br>
&gt; FWIW we&#39;ve been talking a long time ago about a simple lowering - if the<br>
&gt; last argument to a function is a delegate, allow moving the delegate&#39;s<br>
&gt; body outside of the function:<br>
&gt; fun(a, b, c) { body }<br>
&gt;   |<br>
&gt;   V<br>
&gt; fun((a, b, c) { body });<br>
&gt; As far as Walter and I could tell, there are no syntactical issues<br>
&gt; created by such a lowering. But we&#39;ve been wrong about that in the past<br>
&gt; (me 10x more often than him).<br>
&gt; Andrei<br>
<br>
</div></div>So this would basically allow the creation of custom flow control constructs at<br>
least to a limited extent?  For example:<br>
<br>
void unless(T)(T condition, void delegate() executeThis) {<br>
    if(!condition) executeThis();<br>
}<br>
<br>
void until(T)(T condition, void delegate() executeThis) {<br>
    while(!condition) executeThis();<br>
}<br>
<br>
void main() {<br>
    until(someoneKnowsWhetherPequalsNP() ) {<br>
        writeln(&quot;Who knows?&quot;);<br>
    }<br>
<br>
    unless(P == NP) {<br>
        writeln(&quot;P != NP&quot;);<br>
    }<br>
}<br>
</blockquote></div><br>