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

欢迎!请参阅 关于 页面以了解这个工作原理的更多信息。

0 投票
文档

承诺可以被调用以向它们传递一个值(与调用 deliver 相同的结果),但这在文档字符串中并未提及

(def p (promise)) (p 42) ;; 与 (deliver p 42) 相同 @p ;; 42

文档字符串之前

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

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

clojure.core/promise ([] 返回一个承诺对象,它可以使用 deref/@ 来读取,并使用 deliver 或通过调用承诺来设置,一次且仅一次。调用 deref/@ ...

补丁: clj-2480-2.patch
审阅者: Alex Miller

3 个答案

0 投票

评论者:hlewisship

我觉得我们在文档字符串中极度简洁的价值(或定义)上有分歧。

0 投票

评论者:pbwolf

调用承诺不总是返回承诺。同样,deliver 的文档字符串也没有描述返回值。我希望这两个文档字符串(promise 和 deliver)可以保持同步。

观点:我认为在 Clojure 源代码中,IFn 可能只是 reify 玩笑以让 deliver 能够接触到承诺。如果直接调用承诺是官方 API 的计划,那么 deliver 就不会存在。我们真的需要两种交付方式吗?如果人们开始避开 deliver,我就会失去一个非常有用的词来 grep clj 文件!

0 投票
参考: https://clojure.atlassian.net/browse/CLJ-2480 (由 hlewisship 报告)
...