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

欢迎!请参阅 关于 页面获取更多关于如何工作的信息。

0
ClojureScript

问题
当步长为 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

评论由:dnolen 发布

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

0

评论由:tmulvaney 发布

更新了带有性能调整的补丁。

  • some-range? 辅助函数上的 ^boolean 注解添加。
  • 尽可能减少对 Range 类方法的调用。
  • 2 个参数的改进通过替换 ci-reduce 调用,在 master 上减轻了性能下降。
0

评论由:mfikes 发布

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

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