2024年Clojure调查问卷中分享您的想法!

欢迎!请查看关于页面以获取更多关于此工作方式的信息。

0
ClojureScript

问题
当步长为0或负值时,存在一些与范围相关的错误。

例子

`
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参数版本在性能上比master版本减少,通过替换调用ci-reduce。
0

由:mfikes

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

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