在《2024 Clojure状态调查》中分享您的想法!点击此处填写调查问卷!

欢迎!请参阅关于页面,了解这个平台的工作方式。

+3
Transducers

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

21 个回答

0

评论者:alexmiller

欢迎补丁(包括测试)。

0

评论者:ataggart

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

0

评论者:wagjo

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

0

评论者:ataggart

更新到:增加了 "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。我还没有检查它们是否可以直接更新,但猜测这只需要更新差分上下文的几行。

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

0

评论者:gshayban

最好也包含 transducer 的情况。

0

评论者:michaelblume

重新滚动补丁

0

评论者:michaelblume

包含 transducer 情况 =)

0

评论者:michaelblume

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

0

评论者:gshayban

Michael,变换器中不需要挥发/状态,比如 take-while。只需在 "reduced to terminate" 中包装即可

0

评论者:michaelblume

a) 你关于 take-until 的说法显然是正确的

b) 我真的不知道我之前对 take-until 的实现是怎么想的,我要声明是因为睡眠不足。

c) 我不清楚如何在不用挥发性的情况下使 drop-until 生效

0

评论者:michaelblume

Ghadi 和我讨论了这一点,但想不出来有什么使用场景可以用到 drop-until。有吗?

这里有 take-until 的新补丁,包括生成性测试。

待解决问题

take-until 这个名字好吗?我最担心的是,take-until 让人听起来像是对 take 的一点点修改,但这个函数相对于 take 而言改变了判定的顺序。

0

评论者:jafingerhut

Michael,虽然 JIRA 可以处理同名但具有多个附件的同一票,但人们要确定哪个同名附件是想要的可能会变得很混乱。你能否删除或重命名一个同名附件?有关删除补丁的说明请参阅此维客页面的 "Removing patches" 部分: http://dev.clojure.org/display/community/Developing Patches

0

评论者:alexmiller

补丁稍微有点过时,所以我将其更新为适用于 master,但几乎一模一样。归功保留。

标记为预审。

...