[ create a new paste ] login | about

Link: http://codepad.org/COfTfX6A    [ raw code | output | fork ]

D, pasted on Mar 13:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import std.stdio: writefln;

int f0a() { writefln("f0a"); return 0; }
int f0b() { writefln("f0b"); return 0; }
int f1() { writefln("f1"); return 1; }

T firstNonZero(T)(T x) {
    return x;
}

T firstNonZero(T,U...)(T x, lazy U y) {
    if (x)
        return x;
    return firstNonZero(y);
}

void main() {
    writefln(firstNonZero(f0a(), f1(), f0b()));
}


Output:
1
2
3
4
f0a
f1
1



Create a new paste based on this one


Comments: