2024年Clojure状态调查中分享您的想法!

欢迎!请参阅关于页面以获取更多关于如何使用此功能的详细信息。

+3
转换器

讨论:https://groups.google.com/d/topic/clojure-dev/NaAuBz6SpkY/discussion

当我要使用 (take-while pred coll) 但需要包括第一个使得 (pred item) 为假的项时,就会用到它。

(take-while pos? [1 2 0 3]) => (1 2) (take-until zero? [1 2 0 3]) => (1 2 0)

补丁: clj-1451.patch

  • 包括 take-until 的转换器参数数量
  • 包括将其包含在转换器生成测试中

21 答案

0

评论由:gshayban 发布

我觉得这被 CLJ-1906 取代了

0

评论由:gshayban 发布

并且这肯定被halt-when取代了

0

评论由:alexmiller 发布

不是懒加载,但这是用 halt-when 编写 take-until 的一种方法

(defn take-until [p s] (transduce (halt-when p (fn [r h] (conj r h))) conj [] s))

0

评论由:[email protected] 发布

我建议使用: (sequence (halt-when p conj) s),但由于sequence不支持在值减少时停止,所以这不会生效。

0
发布者

评论由:alexmiller 发布

是的,在transduce之外的其他可传递上下文中使用halt-when会有些棘手。

0
发布者
参考: https://clojure.atlassian.net/browse/CLJ-1451(由ataggart报告)
...