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

欢迎!请参阅关于页面了解更多关于其工作方式的信息。

+3
Transducers

讨论: 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 的 transducer 阶数
  • 包含在 transducer 生成测试中的包含

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)
...