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个参数减少与master相比的演习性能。
0

由:mfikes

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

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