Lazy functions, lazy arrays

Dennis Ritchie via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Mar 20 06:35:07 PDT 2015


> Use case?

No. I need to be able to make an array "factorials" is not 
evaluated, if I don't.

import std.stdio;

enum N = 15;

static int[] factorials = memoizeFactorials(N); // lazy array? :)

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;
}

void main()
{
	writeln(factorials[10]);
}


More information about the Digitalmars-d-learn mailing list