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
by

评论由:[email protected] 提供

我想建议:(sequence (halt-when p conj) s),但 sequence 不支持在值减少时提前停止,所以这种方法不可行。

0
by

评论由:alexmiller 撰写

是的,halt-when 在除了 transduce 之外的 transducible 环境中使用比较棘手。

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