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

时间:2015-04-16 14:03:13

标签: clojure macros

这是我第一次尝试使用线程优先宏 我的目标是将矢量放到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 

这是什么意思?

1 个答案:

答案 0 :(得分:6)

您必须使用->>。文档:

  

通过表单线程化expr。 插入x作为     第一种形式的最后一项,如果它不是a,则列出它     列表已经。如果有更多表单,请插入第一个表单作为     第二种形式的最后一项,等等。

您的线程调用有filtermap,它们都将列表作为第二个参数。 ->将它们作为第一个参数。所以你的代码看起来像这样:(filter [1 2 3 4 5 6 7 8] (fn [x] (<= x 3))),你的函数没有seq,因此错误。