alias uint8 = ubyte; alias uint64 = ulong; import std.stdio; import core.thread : Fiber; uint64 fact(uint64 n){ return fact(n, 1); } uint64 fact(uint64 n, uint64 a){ if(n == 0){ return a; }else{ return fact(n - 1, n * a); } } void test7_spawner(){ uint64[] inputs = [5, 7, 10, 3, 8]; uint64[] results = new uint64[inputs.length]; Fiber[] fibers; fibers.length = inputs.length; for(int i = 0; i < inputs.length; i++){ int index = i; fibers[i] = new Fiber({ results[index] = fact(inputs[index]); }); fibers[i].call(); writefln("fact(%s) = %s", inputs[i], results[i]); } } /* ./vtest2 hello here! fact(5) = 120 fact(7) = 5040 fact(10) = 3628800 fact(3) = 6 fact(8) = 40320 */