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

欢迎!请查看关于页面,以获取更多关于这项工作如何进行的详细信息。

0
Clojure

给定一个具有一个固定参数和可变参数的函数,对于 apply 来确定应选择哪个可变参数数量,仅需强制评估 2 个元素,然而当前它强制评估 3 个。

`
user=> (defn x ([a & b]))

'user/x

user=> (apply x (map println (iterate inc 0)))
0
1
2
nil
`

这使得使用 apply(例如 mapcat)的懒函数比可能的情况要懒。
提议的补丁使 RT.boundedLength 在 seq 计数大于最大固定参数数量后立即短路。

`
user=> (defn x ([a & b]))

'user/x

user=> (apply x (map println (iterate inc 0)))
0
1
nil
`

2 个答案

0

评论者:bronsa

该票据中的补丁略微改善了在http://dev.clojure.org/jira/browse/CLJ-1218报告的问题。

0
参考:https://clojure.atlassian.net/browse/CLJ-1583(由 bronsa 报告)
...