Wow! That looks sweet. I Imagine this could be put to good use inside template constraints.. or so I think.
Thumbs up from me. On Tue, Aug 10, 2010 at 6:40 AM, dsimcha <[email protected]> wrote: > == Quote from Andrei Alexandrescu ([email protected])'s > article > > Chris Williams wrote: > > > I'm not sure whether the design of D 2.0 has stabilized as yet, but if > not, > > > I would like to suggest the ability to create custom block types. > > [snip] > > FWIW we've been talking a long time ago about a simple lowering - if the > > last argument to a function is a delegate, allow moving the delegate's > > body outside of the function: > > fun(a, b, c) { body } > > | > > V > > fun((a, b, c) { body }); > > As far as Walter and I could tell, there are no syntactical issues > > created by such a lowering. But we've been wrong about that in the past > > (me 10x more often than him). > > Andrei > > So this would basically allow the creation of custom flow control > constructs at > least to a limited extent? For example: > > void unless(T)(T condition, void delegate() executeThis) { > if(!condition) executeThis(); > } > > void until(T)(T condition, void delegate() executeThis) { > while(!condition) executeThis(); > } > > void main() { > until(someoneKnowsWhetherPequalsNP() ) { > writeln("Who knows?"); > } > > unless(P == NP) { > writeln("P != NP"); > } > } >
