Clojure: trabalhando com um java.util.HashMap em uma forma idiomática de Clojure

eu tenho umjava.util.HashMap objetom (um valor de retorno de uma chamada para o código Java) e gostaria de obter um novo mapa com um par adicional de valor-chave.

E sem eram um mapa do Clojure, eu poderia usar:

(assoc m "key" "value")

Mas tentando isso em umHashMap dá:

java.lang.ClassCastException: java.util.HashMap não pode ser convertido em clojure.lang.Associative

Sem sorte comseq ou:

(assoc (seq m) "key" "value")

java.lang.ClassCastException: clojure.lang.IteratorSeq não pode ser convertido em clojure.lang.Associative

A única maneira que consegui fazer foi usarHashMapé próprioput, mas isso retornavoid então eu tenho que retornar explicitamentem:

(do (. m put "key" "value") m)

Isto não é idiomático código Clojure, mais eu estou modificandom em vez de criar um novo mapa.

Como trabalhar com umHashMap de uma maneira mais Clojure-ish?

questionAnswers(4)

yourAnswerToTheQuestion