4clojure #65 Black Box Testing

4clojure #65 Black Box Testing

シーケンスの種類(:map :set :list :vector)を答える。 ポイントはそれらを調べ、動作を理解することです。

ただし、以下は使用禁止。

class
type
Class
vector?
sequential?
list?
seq?
map?
set?
instance?
getClass
(= :map (__ {:a 1, :b 2}))
(= :list (__ (range (rand-int 20))))
(= :vector (__ [1 2 3 4 5 6]))
(= :set (__ #{10 (rand-int 5)}))
(= [:map :set :vector :list] (map __ [{} #{} [] ()]))

動作を調べるといってもよくわからず、ググって答えを探しました。

(fn seq-type [coll]
  (let [base (empty coll)]
    (cond
      (= base {})        :map
      (= base #{})       :set
      (reversible? base) :vector
      (= base ())        :list)))