curry化再び

結局の所、スタック変数を自前で覚えておけばいいのだ。簡単なことだった。

import std.c.stdio;

class Curry{
    this(int x0, int delegate(int x, int y) f0){
        x = x0;
        f = f0;
    }

    int opCall(int y){
        return f(x, y);
    }

private:
    int x;
    int delegate(int x, int y) f;
}

void main(){
    int hoge(int x, int y){ return x + y; }
    Curry f = new Curry(3, &hoge);
    printf("curry : %d\n", f(4));
}

実行すると勿論。

curry : 7

なんとなくアレな解決策だけど。