欢迎!请在 关于 页面查看一些有关如何使用本网站的信息。
讨论: https://groups.google.com/d/topic/clojure-dev/NaAuBz6SpkY/discussion
当我想使用 (take-while pred coll) 时,就会出现这种情况,但需要包含使得 (pred item) 为 false 的第一个项目。
(take-while pos? [1 2 0 3]) => (1 2) (take-until zero? [1 2 0 3]) => (1 2 0)
补丁: clj-1451.patch
评论者:gshayban
我觉得这被 CLJ-1906 取代了
这肯定也被 halt-when 取代了
halt-when
评论者:alexmiller
这不是惰性的,但这是使用 halt-when 写 take-until 的一种方法
(defn take-until [p s] (transduce (halt-when p (fn [r h] (conj r h))) conj [] s))
评论者:[email protected]
我想建议:(sequence (halt-when p conj) s),但是序列不支持在短值上停止,所以这不行。
是的,halt-when在transduce之外的转换语境中有点难以使用。