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

欢迎!请查看关于页面以获取更多关于此功能的信息。

0
ClojureScript by

问题
当步长为 0 或为负数时,Range 存在一些错误。

示例

`
cljs.user=> (count (range 10 0 0))
-Infinity ; 期望 Infinity

cljs.user=> (nth (range 10 0 -1) -1)
11 ; 期望 IndexOutOfBounds

cljs.user=> (take 5 (sequence identity (range 0 10 0)))
() ; 期望 (0 0 0 0 0)

cljs.user=> (into [] (take 5) (range 0 10 0))
[] ; 期望 [0 0 0 0 0]
`

4 个答案

0
by

评论由:dnolen 发布

这个补丁方向正确,但需要更关注性能。我很乐意通过IRC或Slack讨论它。谢谢!

0
by

评论由:tmulvaney 发布

更新了补丁,并进行了性能调整。

  • some-range? 辅助函数添加了 ^boolean 注解。
  • 尽可能地删除了 Range 的方法调用。
  • 使用 ci-reduce 替换调用 2-arity,显著降低了性能。
0
by

评论由:mfikes 发布

补丁不再适用;需要重新基准化。

0
参考信息:https://clojure.atlassian.net/browse/CLJS-1846(由tmulvaney报告)
...