; Note how the keys passed to dissoc are individual arguments.
(dissoc popsicle-map :green :blue) ; -> {:red :cherry, :purple :grape}
; Note how the keys passed to select-keys are in a vector, not
individual arguments.
(select-keys popsicle-map [:red :green :blue]) ; -> {:green :apple,
:red :cherry}
I wonder why these were implemented differently. Maybe both dissoc and
select-keys should accept both individual key arguments and a sequence
of keys.
--
R. Mark Volkmann
Object Computing, Inc.
I think you misunderstood what I want. I want to be able to pass
individual keys to select-keys. I'm not looking for a way to pass
collections of keys to dissoc and assoc.
My guess is that this inconsistency was purely accidental and could be
fixed so select-keys also accepts individual key arguments.
I must not be writing very clearly today. This is what I want to be able to do.
(def popsicle-map {:red :cherry, :green :apple, :purple :grape})
(select-keys popsicle-map :red :green :blue)
That doesn't work though. It throws
java.lang.IllegalArgumentException: Wrong number of args passed to:
core$select-keys.
I have to wrap the keys in a collection like this instead.
(select-keys popsicle-map [:red :green :blue])
However, I can pass any number of individual keys to assoc and dissoc.
That's the inconsistency I'm trying to point out.
On Feb 21, 5:58 pm, samppi <rbysam...@gmail.com> wrote:Nope - Collections can be keys.
> Allowing dissoc and select-keys to accept both keys as arguments and
> as a collection would be nice, and backwards compatible.
Ah the power of Clojure ;) The fact that (almost?) anything can be a key is a pretty liberating thing.