関数地獄: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」に変更した、こっそりと。)