添加元素到列表的开头
(conj '(2 3 4) 1)
=> '(1 2 3 4)
(conj '(3 4) 2 1)
=> '(1 2 3 4)
Vectors
把列表转换为向量
(vec '(:a :b :c))
用vector函数创建向量
(vector :a :b :c)
用中括号创建向量
[:a :b :c]
添加元素到向量头部
(conj [1 2 3] 4)
=> [1 2 3 4]
(conj [1 2] 3 4)
[1 2 3 4]
Sets
用特殊表创建集合
#{:c :b :d :a}
把list转换为集合
(set '(:a :a :b :c :c :c :c :d :d))
#{:c :b :d :a}
合并两个集合
(clojure.set/union #{:a :b :c} #{:b :c :d})
#{:c :b :d :a}
添加元素到集合
(conj #{1 4 3} 2)
=> #{1 4 3 2}
Maps
使用花括号创建map
{:a 10, :b 20, :c 30}
使用hash-map操作创建map
(hash-map :a 10, :b 20, :c 30)
=> {:c 30, :b 20, :a 10}
创建的map在clojure里面其实是个函数
((hash-map :a 10, :b 20, :c 30) :b)
=> 20
创建map的时候使用的key也是一个函数
(:b {:a 10, :b 20, :c 30})
添加键值对到map中
(conj {:a 1} [:b 2] [:c 3])
=> {:a 1, :b 2, :c 3}
取第一个
(first '(3 2 1))
=> 3
取第二个
(second [2 3 4])
=> 3
取最后一个
(last (list 1 2 3))
=> 3
取除了一个以外的剩余部分
(rest [10 20 30 40])
=> (20 30 40)
Sequences: map
集合变换操作
(map #(+ % 5) '(1 2 3))
=> (6 7 8)
集合过滤
(filter #(> % 5) '(3 4 5 6 7))
=> (6 7)