Paul GrahamのANSI CommonLispで例を作成します
-
30-10-2019 - |
質問
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行目は、特に私にとって魔法のように見えます。どんなコメントも感謝しています。
正しい解決策はありません
所属していません StackOverflow