On Oct 16, 4:57 pm, "Paul Stadig" <[EMAIL PROTECTED]> wrote:
> More options: I was browsing through the docs and I couldn't find a function
> that is the "opposite" of filter, which would allow something like:
>
> (remove nil? coll)
>
> Or alternatively if we had not-nil?
>
> (filter not-nil? coll)
>
> Are either of those more palatable?
>
> In regards to compact removing false, I would be against that, since Clojure
> makes a distinction between false and nil. You could, for example, want to
> have a collection of boolean values, but want to remove the nils (perhaps
> they're a sentinel for some other meaning).
>
> user> (compact [true false nil true true])
> (true false true true)
>
> I think it makes sense to have the number functions like max and min throw a
> NPE, and since false and nil are distinct, I think it makes sense to have a
> compact that removes nil, but leaves false.
>
> Paul
>
> On Thu, Oct 16, 2008 at 4:45 PM, Stuart Halloway
> <[EMAIL PROTECTED]>wrote:
>
>
>
> > Just to add to the confusion: I want compact to remove nil and
> > false. :-)
>
> > > Perhaps another nudge for compact is that it's not as simple as
> > > (filter identity coll), to wit:
>
> > > user> (filter identity [1 2 nil false 4])
> > > (1 2 4)
>
> > > user> (filter #(not (nil? %)) [1 2 nil false 4])
> > > (1 2 false 4)
>
> > > So unless you want to catch false in your net you really need to be
> > > doing the latter, which again is not unreasonable, but just a little
> > > messy to be using frequently.
>

I've been meaning to add remove for a while. It's certainly more
general than compact, and (filter (complement ...)) gets cumbersome
and more difficult to understand.

Done:

(remove nil? [1 2 nil 3 false 4 5])
-> (1 2 3 false 4 5)

Everyone should be aware of the set trick for both filter and remove
with specific values:

(remove #{2 4} [1 2 nil 3 false 4 5])
-> (1 nil 3 false 5)

Rich

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to