我刚刚开始学习Clojure(我的第一个类似Lisp的语言),所以如果这个问题非常愚蠢,我很抱歉.
我想在列表中应用多个方法.到目前为止,我已经想到了
(defn sqr [x] (* x x))
(def my-list '(4 7 9))
(map inc (map sqr (map dec my-list)))
;= (10 37 65)
Run Code Online (Sandbox Code Playgroud)
有没有更好的(更简洁/惯用)的方式来做到这一点?理想情况下,我想做点什么
(apply-multiple (dec sqr inc) my-list)
Run Code Online (Sandbox Code Playgroud)
...也将返回(10 37 65)
.
只需使用功能组合:
(map (comp inc sqr dec) my-list)
Run Code Online (Sandbox Code Playgroud)
或者如果您希望以相反的顺序写下它们(如您的示例中所示):
(map #(-> % dec sqr inc) my-list)
Run Code Online (Sandbox Code Playgroud)