On 03/13/2015 06:51 AM, Dennis Ritchie wrote:
And you can somehow memoization stuff at compile time?
Scarily simple. :D import std.stdio; enum N = 15; enum int[] factorials = memoizeFactorials(N); int[] memoizeFactorials(int n) { if (!__ctfe) { // Make sure that this function is never called at run time assert(false); } int[] result = new int[n]; result[0] = 1; foreach (i; 1 .. n) { result[i] = result[i - 1] * i; } return result; } int fact(int n) { return factorials[n]; } void main() { foreach (i; 0 .. N) { writeln(fact(i)); } } Ali