在clojure中,为什么"某些"功能不能在集合上一致地工作?

Kev*_*Zhu 2 lisp list clojure

对于下面,为什么最后一个返回零?功能"some"不适用于列表列表?

(some #(= % 1) '(1 3)     )  ; ==> true
(some #(= % '(1 3)) ['(1 3) '(1 2 3)]    )  ; ==> true
(some #(= % '(1 3)) '('(1 3) '(1 2 3))   )  ;==> nil 
Run Code Online (Sandbox Code Playgroud)

nta*_*lbs 10

您应该像这样修改表达式:

(some #(= % '(1 3)) '((1 3) (1 2 3))   )
=> true
Run Code Online (Sandbox Code Playgroud)

您已使用引用列表',不需要在引用列表中再次引用.

您可以轻松查看REPL中发生的情况:

user=> '((1 3) (1 2 3))
((1 3) (1 2 3))
user=> '('(1 3) '(1 2 3))
((quote (1 3)) (quote (1 2 3)))
Run Code Online (Sandbox Code Playgroud)