Я только начинаю изучать Clojure (мой первый Lisp-подобный язык), поэтому я сожалею, если этот вопрос очень глупый.Применить несколько методов к списку Clojure?
Я хотел бы применить несколько методов в списке. До сих пор я придумал
(defn sqr [x] (* x x))
(def my-list '(4 7 9))
(map inc (map sqr (map dec my-list)))
;= (10 37 65)
Есть ли лучший (более сжатый/идиоматический) способ сделать это? В идеале я хотел бы сделать что-то вроде
(apply-multiple (dec sqr inc) my-list)
... который бы также вернуться (10 37 65)
.
Исходя из мира Java/Scala, то Форма «dec sqr inc» выглядела более «естественной», но я предполагаю, что «inc sqr dec» более идиоматичен для Lisp? – sigint
@sigint Да, это обычный порядок составления функций, как в математических обозначениях (см. Http://en.wikipedia.org/wiki/Function_composition). Большинство функциональных языков, включая большинство лиз, придерживаются этого порядка. Некоторые языки (в частности, F #) дают вам выбор, предлагая два разных оператора. – rightfold