   (assert (= 2 ('b '{:a 1 b 2})))
   (assert (= 2 ({:a 1 :b 2} :b)))
   (assert (= 2 ({1 1 2 2} 2)))
+  (assert (= 2 (:a {:b 1} 2)))
+  (assert (= 2 (:a {} 2)))
+  (assert (= 2 ({:b 1} :a 2)))
+  (assert (= 2 ({} :a 2)))
+  (assert (= nil (:a {})))
   (assert (= 2 (#{1 2 3} 2)))
 
   (assert (= 1 (apply :a '[{:a 1 a 2}])))

  (assert (not (= 1 1 2)))
  (assert (not (= 1 1 2 1)))
  (assert (not (= 1 1 1 2)))
  
  ;; arithmetic
  (assert (= (+) 0))
  (assert (= (apply + []) 0))

                   pop
                   (conj 31)
                   (conj 32)))))

  (let [stack1 (pop (vec (range 97)))
        stack2 (pop stack1)]
    (assert (= 95 (peek stack1)))
