简单的clojure:为什么不同表达式的输出是相同的?

时间:2016-10-13 15:22:54

标签: clojure

(map (comp #(- 9  %) *) [2 4 6] [0 0 0])

输出:(9 9 9)

(map (comp #(+ 9  %) *) [2 4 6] [0 0 0])

输出:(9 9 9)

为什么这些输出相同? #(- 9 %)#(+ 9 %)不同。

2 个答案:

答案 0 :(得分:8)

您将每个数字都设为零:

(map * [2 4 6] [0 0 0])
;; -> (0 0 0)

剩下的就是:9-0 == 9+0

答案 1 :(得分:3)

一般

MvcHtmlString

...可以重构为

(map (comp f g) s t)

在这种情况下,

(map f (map g s t))

...变成

(map (comp #(- 9  %) *) [2 4 6] [0 0 0])

......减少到

(map #(- 9  %) (map * [2 4 6] [0 0 0]))

因此,将(map #(- 9 %) '(0 0 0)) 更改为-没有任何区别。

以上基本上是cfrick's answer的解释。