Necesito comparar muy eficientemente dos mapas en Clojure/Java, y devolver la diferencia según lo determinado por los .equals de Java (..), con nil/null equivalente a "no presente".Diferencia entre dos mapas
es decir, Busco la manera más eficiente para un escribir una función como:
(map-difference
{:a 1, :b nil, :c 2, :d 3}
{:a 1, :b "Hidden", :c 3, :e 5})
=> {:b nil, :c 2, :d 3, :e nil}
preferiría un mapa de Clojure inmutable como de salida, pero un mapa Java también estaría bien si la mejora del rendimiento sería significativo.
Por lo que vale la pena, mi básico de casos de prueba/expectativa de comportamiento es que el siguiente será igual (hasta la equivalencia de null = "Ausente") para cualquier dos mapas A y B:
a
(merge b (difference a b))
¿Cuál sería la mejor manera de implementar esto?
historia antigua, pero me pregunto cómo 'clojure.data.diff' de Clojure 1.3 le iría en ¿tu problema? –