这是我第一次尝试使用线程优先宏
我的目标是将矢量放到map
然后filter
(-> [1 2 3 4 5 6 7 8]
(filter (fn [x] (<= x 3)))
(map (fn [x] (* 10 x))))
我正在
Error: function (x){return (10 * x);
}is not ISeqable
at Error (<anonymous>)
at cljs.core.seq
这是什么意思?
答案 0 :(得分:6)
您必须使用->>
。文档:
通过表单线程化expr。 插入x作为 第一种形式的最后一项,如果它不是a,则列出它 列表已经。如果有更多表单,请插入第一个表单作为 第二种形式的最后一项,等等。
您的线程调用有filter
和map
,它们都将列表作为第二个参数。 ->
将它们作为第一个参数。所以你的代码看起来像这样:(filter [1 2 3 4 5 6 7 8] (fn [x] (<= x 3)))
,你的函数没有seq,因此错误。