请分享您的观点,参与 2024 Clojure 状态调查!

欢迎!请查看 关于 页面,了解更多有关该工作的信息。

+3
转换器

讨论: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

  • 包含 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

是的,halt-when在transduce以外的可传输上下文中使用有点复杂。

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