Clojure 尝试使用线程宏并获取错误信息

Clojure 尝试使用线程宏并获取错误信息,clojure,macros,Clojure,Macros,这是我第一次尝试使用threadfirst宏 我的目标是让向量通过map然后filter (-> [1 2 3 4 5 6 7 8] (filter (fn [x] (<= x 3))) (map (fn [x] (* 10 x)))) (->[12345678] (filter(fn[x])(您必须使用->。文档: 将expr穿过窗体。插入x作为 第一个表单中的最后一项,如果不是 已列出。如果有更多表单,请插入第一个表单作为 第二种形式的最后一项等 那里的线程调用

这是我第一次尝试使用threadfirst宏 我的目标是让向量通过
map
然后
filter

(-> [1 2 3 4 5 6 7 8]
    (filter (fn [x] (<= x 3)))
    (map (fn [x] (* 10 x))))
(->[12345678]

(filter(fn[x])(您必须使用
->
。文档:

将expr穿过窗体。插入x作为 第一个表单中的最后一项,如果不是 已列出。如果有更多表单,请插入第一个表单作为 第二种形式的最后一项等


那里的线程调用有
filter
map
,它们都将列表作为第二个参数。
->
将它们作为第一个参数。因此那里的代码如下所示:
(filter[1 2 3 4 5 6 7 8](fn[x](你需要使用
->
@cfrick为什么?你能详细说明一下吗?作为一个小小的旁注:在CLJS和Clojure 1.7.0中,你可以使用传感器,我可以简化这一点:
(转换成[](comp(filter…(map…)[1 2 3 4 5 6])
   Error: function (x){return (10 * x);
}is not ISeqable
    at Error (<anonymous>)
    at cljs.core.seq