Hi, The problem here is that filter is expecting a predicate and you are passing a set.
When used as a function like so user=> (#{1 2 3} 2) 2 user=> (#{1 2 3} 5) nil the set returns the argument if it is in the set and nil otherwise. The problem you are observing is because the item being returned is false. That is, user=> (#{true false} false) false and the conditional test in the definition of filter is, naturally, failing for this value. I actually think the behaviour in the first case is wrong since the documentation for filter is Returns a lazy sequence of the items in coll for which (pred item) returns true. pred must be free of side-effects. Note it says "returns true" not "not nil nor false". The problem here is that the "if" special form used to define filter does the following: user=> (if 1 "yes" "no") "yes" As it currently stands, either "filter" needs to be redefined using (if (true? (p (first s) ...) or the documentation needs to be changed. Regards, Mark. On Aug 19, 9:37 am, Sean Devlin <francoisdev...@gmail.com> wrote: > Hello Clojurians, > I commonly use a set in my filtering operations, like the example > below. > > user=> (filter #{\a \e \i \o \u} "The quick brown fox jumped over the > lazy dog") > (\e \u \i \o \o \u \e \o \e \e \a \o) > > Today I found myself using the following code > > user=> (filter #{false} [true false false true]) > () > > Obviously, this is not what I intended. The best I could do was the > following > > user=> (filter (comp not nil? #{false}) [true false false true]) > (false false) > > Does anyone else have any other ideas? > > Sean --~--~---------~--~----~------------~-------~--~----~ 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 Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---