私は、他のいくつかの関数の構成を返す関数を作成したかったのです。
(funcall (compose 'f 'g) x) == (f (g x))
私はこれで惨めに失敗したと感じています。これまでの私の最善の試み:
(defun compose (funcs)
"composes several funcitons into one"
(lambda (arg)
(if funcs
(funcall (car funcs) (funcall (compose (cdr funcs)) arg))
arg)))
しかし、何らかの理由で、以下は依然として 0 を返します。
(funcall (compose '(
(lambda (a) (* a 3))
(lambda (a) (+ a 2))
)) 0)
それを修正する方法はありますか?