module pind.samples.ja.fibers.fibers_2; import std.array; int sum(int[] arr, int currentSum = 0) { if (arr.empty) { /* 追加する要素はない。結果は、これまでに * 計算されたものだ。 */ return currentSum; } /* 最初の要素を現在の合計に追加し、 * 残りの要素でselfを呼び出す。 */ return sum(arr[1..$], currentSum + arr.front); } void main() { assert(sum([1, 2, 3]) == 6); }