I'm writing a function called genArray that accepts a function gen and returns a random array populated by calling gen(). genString builds on this by returning genArray(&genChar). But my type signatures are wrong.

In dashcheck.d:

char genChar() {
    return cast(char) uniform(0, 128);
}

T[] genArray(T function() gen) {
    int len = uniform(0, 100);
    T[] arr = [];

    for(int i = 0; i < len; i++) {
        arr ~= gen();
    }

    return arr;
}

string genString() {
    return genArray(&genChar);
}

Trace:

dashcheck.d(17): Error: undefined identifier T
dashcheck.d(17): Error: T is used as a type
dashcheck.d(17): Error: undefined identifier T
dashcheck.d(17): Error: T is used as a type

Full code at GitHub

Cheers,

Andrew Pennebaker
www.yellosoft.us