I recently discovered D's function literals and wrote a small test to explore them. The following code prints out a 15, then a 0. It seems to me that the second should be 64 and not 0. Can anyone explain what I'm doing wrong?
module functionliteral; import std.stdio; static void main() { int[] values = [1,2,4,8]; writefln(Reduce(values, function int(int x, int y) { return x + y; })); writefln(Reduce(values, function int(int x, int y) { return x * y; })); } static int Reduce(int[] values, int function(int x, int y) operation) { int total; foreach (int v; values) total = operation(total,v); return total; }