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

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

+1
Clojure
为了安全地测试一个任意序列是否已实现(非惰性),我们需要一个包装器,例如


(defn seq-realized? [s]
  (if (instance? clojure.lang.IPending s)
    (realized? s)
    true))


如果对于非ISeq和IPending的实例{{realized?}}返回true,那么在诸如{{(realized? (range 10))}}等情况下,将会有更少的意外行为,因为这将引发异常。

注意:是CLJ-1751的一个后续方案。

4 个答案

0

评论者:marc

附上补丁,使realized?对于非挂起xs返回true。

0

评论者:marc

擦除那个 - 补丁不好。

0

评论者:marc

附上补丁,使realized?对于非挂起xs返回true。为IPending类型添加测试。

0
by
参考: https://clojure.atlassian.net/browse/CLJ-1752(由 alex+import 报告)
...