如何从旧的序列得到一个新的序列中,新的元素是从旧的,直到一个条件满足Clojure的顺序操作
假设条件是#(>%0)
'(1 2 3 0 3 2 0 1)返回1,2,3
'(0 1 2 3)返回空SEQ
“(1 2 3)返回的一切。
注意它与过滤器不一样。
如何从旧的序列得到一个新的序列中,新的元素是从旧的,直到一个条件满足Clojure的顺序操作
假设条件是#(>%0)
'(1 2 3 0 3 2 0 1)返回1,2,3
'(0 1 2 3)返回空SEQ
“(1 2 3)返回的一切。
注意它与过滤器不一样。
你可能想使用take-while:
(take-while #(> % 0) '(1 2 3 0 3 2 0 1))
=> (1 2 3)
mikera的答案看起来不错,但也考虑split-with
,如果你需要做的列表的其余部分进一步处理。
=> (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)
甚至'(取而POS“(1 2 3 0 3 2 0 1) )',在这个特定的情况下。 – sanityinc 2012-03-23 11:18:07