some函数可以从集合中找到满足条件的第一个数据
some支持接收一个集合作为参数
(some #{2 7 6} [5 6 7 8])
=> 6
也支持接收一个函数作为条件
(some #(when (even? %) %) [5 6 7 8])
=> 6
其实在clojure里面集合也是一个函数,filter和map等操作同样支持集合作为参数
(filter #{2 7 6} [5 6 7 8])
=> (6 7)
(map #{2 7 6} [5 6 7 8])
=> (nil 6 7 nil)
同样的我们发现map操作也支持用map作为参数,所以在clojure中map也是一个函数
(map {:a 2 :b 7 :c 6} [:a 6 7 8])
=> (2 nil nil nil)
试试列表和向量
(map (list 6 7) [:a 6 7 8])
ClassCastException clojure.lang.PersistentList cannot be cast to clojure.lang.IFn clojure.core/map/fn--4785 (core.clj:2644)
(map (vector 6 7) [:a 6 7 8])
IllegalArgumentException Key must be integer clojure.lang.APersistentVector.invoke (APersistentVector.java:292)
报错了,难道说列表和向量在clojure中不是函数?