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))))