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?辅助函数中添加了布尔值注解。
  • 尽可能地取消了对范围方法的调用。
  • 替换了对ci-reduce的调用,2个参数版本的改进2-arity显著降低了性能。
0

评论者:mfikes

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

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