import tango.io.Stdout;

T[] filter (alias dg, T) (T[] list) {

    T[] result;

    foreach (T item; list) {

        if (dg(item)) {

            result ~= item;

        }

    }

    return result;

}

void main () {

    int[] list   = [1,2,3,4,5,6,7,8,9,10];
    int[] result = filter!((int a) {
                       return a % 2 == 0;
                   })(list);

    foreach (int item; result) {

        Stdout(item).newline();

    }

}