関数地獄:C編 追記

ラッピング方式をちょっとだけ考えてみた。

typedef void *combinator;
#define APPLY(f, x) (((combinator(*)(combinator))f)(x))

combinator s(combinator f, combinator g, combinator x) {
  return APPLY(APPLY(f, x), APPLY(g, x));
}

冗長になったが、まだこっちの方が分かりやすいような気はする。


……そう言えば、カリー化も考えないといけなさそうだが、これは面倒なのでやめとく。
GC無しで書くのは大変そうだし。


(追記: 型の名前を「func」から「combinator」に変更した、こっそりと。)