Мне нужно очень эффективно сравнивать две карты в Clojure/Java и возвращать разницу, как определено Java.equals(..), с нулевым/нулевым эквивалентом "нет".
то есть. Я ищу наиболее эффективный способ написать такую функцию, как:
(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}
Я бы предпочел неизменную карту Clojure в качестве вывода, но карта Java также была бы хороша, если бы улучшение производительности было значительным.
Для того, что стоит, мой основной тестовый пример/ожидание поведения заключается в следующем: (до эквивалентности null = "Нет" ) для любых двух карт a и b:
a
(merge b (difference a b))
Каким будет лучший способ реализовать это?