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

欢迎!请参阅关于页面,了解更多关于如何使用本服务的信息。

0
Clojure

Dorun可以像(dorun n coll)这样调用。以这种方式调用时,dorun将强制从coll中提取n+1个元素,这看起来并不直观。但我不一定认为这是一个缺陷。这没有偏离已记录的行为,因为没有记录的行为——两个参数的arity未在文档字符串中提及。

`
user=> (defn printing-range [n] (lazy-seq (println n) (cons n (printing-range (inc n)))))

'user/printing-range

user=> (dorun 0 (printing-range 1))
1
nil
user=> (dorun 3 (printing-range 1))
1
2
3
4
nil
`

2回答

0

评论者:stu

我认为这不是一个错误,因为它是由{{seq}}的普遍语义引起的,而不只是{{dorun}}的。考虑

(def x (seq (printing-range 0))) 0

即仅仅调用{{seq}}就消费了第一个项。我将它作为一个改进文档字符串的特请求留下。

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