質問

Paul GrahamのANSI CommonLISPページ110の例を誰かが説明できますか?

この例では、機能的なプログラミング施設を作成するために、使用&RestとLambdaを説明してみてください。それらの1つは、機能的な引数を構成する機能です。それがどのように機能したかを説明するものは見つかりません。コードは次のとおりです。

(defun compose (&rest fns)
  (destructuring-bind (fn1 . rest) (reverse fns)
    #'(lambda (&rest args)
        (reduce #'(lambda (v f) (funcall f v))
                rest
                :initial-value (apply fn1 args)))))

使用法は次のとおりです。

(mapcar (compose #'list #'round #'sqrt)
        '(4 9 16 25))

出力は次のとおりです。

((2) (3) (4) (5))

2行目と6行目は、特に私にとって魔法のように見えます。どんなコメントも感謝しています。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top