我刚刚开始学习Clojure(我的第一个类似Lisp的语言),所以如果这个问题非常愚蠢,我很抱歉。
我想在列表中应用多个方法。到目前为止,我已经提出了
(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)
。
答案 0 :(得分:8)
只需使用功能组合:
(map (comp inc sqr dec) my-list)
或者如果您希望以相反的顺序写下它们(如您的示例中所示):
(map #(-> % dec sqr inc) my-list)