Clojure序列运算

Clojure序列运算,clojure,Clojure,如何从一个旧序列中得到一个新序列,新序列的元素是从旧序列中得到的,直到满足一个条件为止 假设条件为#(>%0) "(1230301)返回1,2,3 '(01 2 3)返回空序列 "(1 2 3)返回一切 注意,它与过滤器不同。您可能需要使用: < Miketa的答案看起来不错,但是如果你需要对列表的其余部分做进一步的处理,请考虑与分开。 => (split-with #(> % 0) '(1 2 3 0 3 2 0 1)) [(1 2 3) (0 3 2 0 1)] 这就是Cloj

如何从一个旧序列中得到一个新序列,新序列的元素是从旧序列中得到的,直到满足一个条件为止

假设条件为#(>%0)

"(1230301)返回1,2,3

'(01 2 3)返回空序列

"(1 2 3)返回一切

注意,它与过滤器不同。

您可能需要使用:


< Miketa的答案看起来不错,但是如果你需要对列表的其余部分做进一步的处理,请考虑<代码>与分开。

=> (split-with #(> % 0) '(1 2 3 0 3 2 0 1))
[(1 2 3) (0 3 2 0 1)]

这就是Clojure的乐趣:剥猫皮的方法有很多:

(for [i '(1 2 3 0 3 2 0 1) :while (> i 0)] i)
=> (1 2 3)
甚至在这种特殊情况下,
(take while pos?(1 2 3 0 3 2 0 1))
(for [i '(1 2 3 0 3 2 0 1) :while (> i 0)] i)
=> (1 2 3)