On 11/25/2017 02:05 PM, Adam D. Ruppe wrote:
On Saturday, 25 November 2017 at 21:42:29 UTC, Ali Çehreli wrote:
I tried to implement the following but gave up because I could not
ensure short circuit behaviour.
when(
c1.then(foo()),
c2.then(bar()),
otherwise(zar())
);
Possible?
Bones: "Perhaps the professor can use your computer."
https://dlang.org/spec/function.html#lazy_variadic_functions
Dr. Nichols: "Lazy variadic functions?!"
Scotty: "That's the ticket, laddie."
---
import std.stdio;
void when(bool delegate()[] foo...) {
foreach(i; foo) {
if(i())
return;
}
}
Cool! So, D is great even without templates. ;)
Despite 'lazy', apparently my failed attempt had eager arguments:
void when(lazy bool[] args...) {
// ...
}
Ali