中分享您的想法吧!

欢迎!请参阅关于页面,了解此如何工作的更多信息。

+2
Clojure

some-fn的一些arity在no-match时返回false,而其他返回nil。我建议应该总返回nil,就像some一样--some-fn是一种展开。

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 中修复?

不是,我认为不是。

   $ 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\
...