#user=> (contains? () "A")
IllegalArgumentException contains? not supported on type: clojure.lang.PersistentList$EmptyList clojure.lang.RT.contains (RT.java:724)
#これは従来のLispの感覚だとはまるなあ。
#つまりリストはコレクションじゃないってことか。
#user=> (contains? nil "A")
false
#この不条理感
##リストから探すのは線形探索になるからsetを使えってことらしい
#しかし「要素数個なら新たにセットをアロケートするより線形探索の方が速い」という思考に犯されてるからついついいちいちset作るの躊躇しちゃうな
#まぁ、確かにClojure書く時、あんまりリストって使わない気がする。
#user=> (contains? (map s/upper-case ["hoge" "moke" "fuga"]) "MOKE")
IllegalArgumentException contains? not supported on type: clojure.lang.LazySeq clojure.lang.RT.contains (RT.java:829)
#これちょっと嫌だな。
#要素数が既知だとベクタ作りやすいからそっちを多用するね。
#シーケンスに対しては(some #(= elt %) seq) がイディオムなんだな。
#(some #(= "MOKE" %) ["HOGE" "MOKE" "FUGA"])
#こう書け、と。
#んー