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

欢迎!请参阅关于页面以了解更多有关如何使用本站的信息。

+2
Clojure

some-fn的某些arity在无匹配时返回false,其他返回nil。我建议返回值应该始终是nil,类似于some(some-fn是由some展开的)。

user=> ((some-fn identity identity identity) false)
false
user=> ((some-fn identity identity identity identity) false)
nil

登录: https://clojure.atlassian.net/browse/CLJ-2634

2 答案

0

被选中
 
最佳答案

该函数不是一个谓词(不以?结尾),并在文档字符串中清楚地讨论了“逻辑真”和“逻辑假”。因此,不会修复。

0

这难道不是一个重复的问题吗?有关 https://ask.clojure.org/index.php/10366/some-has-different-short-circuiting-when-using-predicates,该问题已在 Clojure 1.11 Alpha 2 中修复?

by
不,我不这么认为。

   $ clj -Sdeps \
       '{:deps
        {org.clojure/clojure
         {:mvn/version "1.11.0-alpha2"}}}'
   Clojure 1.11.0-alpha2
   user=> *clojure-version*
   {:major 1, :minor 11, :incremental 0, :qualifier "alpha2"}
   user=> ((some-fn identity identity identity) false)
   false
   user=> ((some-fn identity identity identity identity) false)
   nil
...