On Sat, Feb 21, 2009 at 5:31 PM, David Nolen <[email protected]> wrote:
> Oops, sorry. It seems weird to me that a function called select-keys would
> take a single parameter and not a vector. Also, as you said, this does seem
> like it would require some kind of check which would probably not worth the
> tradeoff. Why not write a function called select-key that does what you
> want?
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 Sat, Feb 21, 2009 at 6:24 PM, Mark Volkmann <[email protected]>
> wrote:
>>
>> On Sat, Feb 21, 2009 at 5:07 PM, David Nolen <[email protected]>
>> wrote:
>> > dissoc is like assoc.
>> > If you want to use collections with dissoc you can always use apply.
>> > It's
>> > not too much to type:
>> > (def my-map {:first "Bob", :middle "Joe", :last "Smith"})
>> > (apply dissoc my-map [:first :middle])
>>
>> 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.
>>
>> > On Sat, Feb 21, 2009 at 5:58 PM, samppi <[email protected]> wrote:
>> >>
>> >> Allowing dissoc and select-keys to accept both keys as arguments and
>> >> as a collection would be nice, and backwards compatible. In any case,
>> >> ostensibly it should be consistent; otherwise, it's just an
>> >> idiosyncrasy in the language that people will have to deal with. I
>> >> wonder what the reasoning is behind it, or if it was completely
>> >> arbitrary.
>> >>
>> >> On Feb 21, 1:28 pm, Mark Volkmann <[email protected]> wrote:
>> >> > (def popsicle-map {:red :cherry, :green :apple, :purple :grape})
>> >> >
>> >> > ; 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.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---