比較用のシーケンスが2つあり、比較結果をマップに保持する必要があります。最初のシーケンスのデータはキーとして機能し、2番目のシーケンスは値として機能します。動作するサンプルコードがあります
(def myAtom (atom {}))
(map #(if (== %1 %2) (swap! myAtom assoc %1 %2 ))
[1 2 3] [4 5 3])
(prn @myAtom) ; ==> {3 3}
ただし、上記の「同じ」ものを1つのletバインディングに入れると、機能しなくなります。
(let [ myAtom (atom {})]
(map #(if (== %1 %2) (swap! myAtom assoc %1 %2 ))
[1 2 3] [4 5 3])
(prn @myAtom)) ;;==> {} empty???
だから問題は、letbinding内のmyAtomはどうなるのかということです。どうして行方不明なの?