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

评论来自:alexmiller

欢迎修改补丁(附带测试)。

0

评论来自:ataggart

包含 take-until 和 drop-until 的实现和测试,每个补丁一个。

0

评论来自:wagjo

请将 :added 元数据更改为 "1.7"。

0

评论来自:ataggart

更新为 :added "1.7"。

0
作者

评论者:jbm

我想提出{{take-through}}和{{drop-through}}作为备选名称。我认为“through”更能清晰地表达它们与{{take-while}}和{{drop-while}}的区别。

0
作者

评论者:jafingerhut

由于今天早些时候的一些更改,2014年6月20日的补丁CLJ-1451-drop-until.patch和CLJ-1451-take-until.patch不再与最新的Clojure master干净地应用。我没检查它们是否直观更新,但猜测它们可能仅仅需要更新几下diff上下文。

有关如何更新补丁的建议,请参阅http://dev.clojure.org/display/community/Developing Patches中“更新过时的补丁”部分。

0
作者

评论者:gshayban

最好也涵盖transducer的情况。

0
作者

评论者:michaelblume

已重新滚动补丁

0
作者

评论者:michaelblume

已涵盖transducer的情况

0
作者

评论者:michaelblume

实际上我也喜欢take/drop-through

0
作者

评论者:gshayban

迈克尔,在变换器中不需要使用volatile或state,例如用take-while。只需用'reduced to terminate'来包装。

0

评论者:michaelblume

a) 你在take-until方面显然是对的。

b) 说实话,我不知道我之前对take-until的实现是怎么想的,我要找个理由说是因为没睡好。

c) 我不明白如何在没有volatile的情况下使drop-until工作。

0

评论者:michaelblume

我和加迪讨论了这个问题,但我们找不到drop-until的用例。有什么吗?

这是一个新的take-until补丁,包括生成测试。

开放性问题

take-until这个名字好吗?我最担心的是,take-until听起来像是take的微小修改,但这个函数实际上反转了与take相关的谓词的意义。

0

评论者:jafingerhut

迈克尔,虽然JIRA可以处理具有相同名称的多个附件,但是确定哪个具有相同名称的附件被使用可能会很令人混淆。您能否删除或重命名一份同名附件?有关删除补丁的说明,请参阅此维基页面上的“删除补丁”部分:http://dev.clojure.org/display/community/Developing Patches

0

评论来自:alexmiller

补丁略有陈旧,所以我更新到master以适应,但它们几乎是相同的。保留了归属。

标记为预筛选。

...