昨日の物(http://www.kmonos.net/wlog/52.php#_0212050903)は 継承を使うのが一番自然と気づいたので追加。

template fix(T){alias T fix;}
class memo(T):T{
	int memo[int];
	int opCall(int a){
		int*p = a in memo;
		return !p?memo[a] = super.opCall(a):*p;
	}
}
class fib{
	int opCall(int n){
		if(n<=1)return 1;
		return opCall(n-1)+opCall(n-2);
	}
}
int main(){
	fib f;
	f = new memo!(fib);
	for(int i=0;i<33;++i)printf("%d\n",f(i));
	printf("\n");
	f = new fix!(fib);
	for(int i=0;i<33;++i)printf("%d\n",f(i));
	return 0;
}

継承を使うと非常に意図が分かりやすくなったが、面白みのないコードになった。
memoが型決め打ちなのはtemplateを駆使すれば回避できる気もするが面倒なのでパス