(= m (zipmap (keys m) (vals m)))
Clojure 1.3+に依存しても大丈夫
ですか?
この動作を行うと、状況によってはコードが少し読みやすくなります。
(defn replace-keys [smap m]
(zipmap (replace smap (keys m)) (vals m)))
対。
(defn replace-keys [smap m]
(into {} (for [[k v] m] [(smap k k) v]))
はい、それが変更された場合、多くのclojureが壊れます。
マップはツリーとして保存され、両方の関数が同じツリーを同じ順序で歩きます。
これに対する答えがイエスであることを(公式に)確認できます。keys
Clojure 1.6 でとのドキュメント文字列vals
が更新され、これについて言及されました ( http://dev.clojure.org/jira/browse/CLJ-1302を参照)。