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 写取 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
...