compose の実装
なかなか美しかった。
on lispだと、変にcomposeと別の機能が一緒くたになっていて無駄に複雑な気がする。
applyのあとのifはawhenでいい気がするのと'idfnというダミー値(?)はよくわからん。
ああ、labelsがないのはLisp-1だからなのか。もしかして。
いや、ちがうなぁ。CommonLispでlabelsなのは委員会はアナフォリックを却下した?
rfn的アプローチはいい気がするけれど、Lisp-2だとfuncall必須になってlabelsの方がきれいかも。
(mac compose args (let g (uniq) `(fn ,g ,((afn (fs) (if (cdr fs) (list (car fs) (self (cdr fs))) `(apply ,(if (car fs) (car fs) 'idfn) ,g))) args))))