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

欢迎!有关如何使用本网站的一些更多信息,请参阅关于页面。

0
文档

承诺可以被调用以向其交付一个值(与调用 deliver 相同的结果),但这在文档字符串中没有提到

(def p (promise)) (p 42) ;; 相当于 (deliver p 42) @p ;; 42

旧的文档字符串

返回一个可以使用 deref/@ 读取的承诺对象,并且只能使用 deliver 一次来设置。对 deref/@ 的调用...

建议:将文档字符串更改为

clojure.core/promise([]) 返回一个承诺对象,它可以用 deref/@ 读取,并可以通过 deliver 调用或由 deliver 调用,只能设置一次。对 deref/@ 的调用...

补丁:clj-2480-2.patch
审核:由 Alex Miller

3 回答

0

评论者:hlewisship

我认为我们对(在文档字符串中)过度简洁的价值或定义意见不一致。

0

评论者:pbwolf

调用承诺不总是返回承诺。此外,deliver 的文档字符串没有描述返回值。我希望承诺(promise 和 deliver)的文档字符串保持一致。

观点:在我看来,Clojure 源代码中的 IFn 似乎只是一个 reify 派生技巧,以便 deliver 可以接触承诺。如果调用承诺是官方 API 的计划,那么 deliver 就不存在了。我们真的需要两种交付方式吗?如果人们开始避免使用 deliver,我就会失去一个在 clj 文件中 grep 的好词了!

0
参考:[https://clojure.atlassian.net/browse/CLJ-2480](https://clojure.atlassian.net/browse/CLJ-2480) (由 hlewisship 提出)
...