No problem, however this nuance has broader implications than just this code
snippet :)
If you pass false and nil values to a library and expect them to be processed
differently, you may end up with a big surprise.
Luc
> The difference between nil and false is really handy in some cases
> and f
The difference between nil and false is really handy in some cases
and for many people removing nil (or keeping not-nil) values from a seq
is not removing falsy values.
I just wanted to point out the issues that may arise from a blind use of
(filter identity [...]) ;)
On Friday, October 26, 2012
I avoid making explicit distinctions between false and nil in my code.
In Clojure a falsy value is either nil or false.
In interop I ensure that null and false when returned in the upper layers
are made consistent (including Boolean objects set to false).
Too much potential trouble in my opinion
(filter (comp not nit?) [nil 2 3 nil false true 4])
->
(remove nil? [...])
On Fri, Oct 26, 2012 at 12:53 PM, kevin roth
wrote:
> Be careful with the (filter identity ...) which will also remove "falses"
> from seqs.
> (filter identity [nil 2 3 nil false true 4])
> => (2 3 true 4)
> Since (identit
Be careful with the (filter identity ...) which will also remove "falses"
from seqs.
(filter identity [nil 2 3 nil false true 4])
=> (2 3 true 4)
Since (identity false) and (identity nil) returns respectively false and
nil they are BOTH rejected by filter.
This could do the trick:
(filter (comp
On Thu, Nov 18, 2010 at 10:47 AM, Glen Rubin wrote:
> So, it seems the way I was removing nils using filter was already the
> best way. still nice to learn about the keep fn. thx!
I don't know if we can conclude that yet. It seems to be fastest on
one system with one combination of Java version
So, it seems the way I was removing nils using filter was already the
best way. still nice to learn about the keep fn. thx!
On Nov 17, 8:38 pm, Ken Wesson wrote:
> On Wed, Nov 17, 2010 at 7:55 PM, Robert McIntyre wrote:
> > So, just to be clear,
>
> > user> (def nil-seq (doall (interleave (rep
On Wed, Nov 17, 2010 at 7:55 PM, Robert McIntyre wrote:
> So, just to be clear,
>
> user> (def nil-seq (doall (interleave (repeat 1e5 nil) (repeat 1e5
> "whatever"))) )
> #'user/nil-seq
>
> user> (time (doall (keep identity nil-seq)))
> "Elapsed time: 122.485848 msecs"
>
> user> (time (doall (remo
So, just to be clear,
user> (def nil-seq (doall (interleave (repeat 1e5 nil) (repeat 1e5
"whatever"))) )
#'user/nil-seq
user> (time (doall (keep identity nil-seq)))
"Elapsed time: 122.485848 msecs"
user> (time (doall (remove nil? nil-seq)))
"Elapsed time: 149.71484 msecs"
--Robert McIntyre
Miki writes:
> user=> (time (remove nil? (repeat 100 nil)))
> "Elapsed time: 0.079312 msecs"
> ()
> user=> (time (filter identity (repeat 100 nil)))
> "Elapsed time: 0.070249 msecs"
> ()
>
> Seems like filter is a bit faster, however YMMV
You're not timing the execution, just the constru
Re-oups, Clojure 1.0 to 1.2 upgrade glitch :)
Mark Engelberg wrote ..
> (keep identity l) is preferable to (filter identity l)
>
> --
> 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
>
Oups.. :)
Stuart Campbell wrote ..
> On 17 November 2010 12:37, wrote:
>
> > user=> (time (filter identity [ nil 1 2 nil 4]))
> > "Elapsed time: 0.053219 msecs"
> > (1 2 4)
> >
> > user=> (time (remove nil? [ nil 1 2 nil 4]))
> > "Elapsed time: 0.065092 msecs"
> > (1 2 4)
> >
> > Choose the fla
(keep identity l) is preferable to (filter identity l)
--
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 po
On 17 November 2010 12:37, wrote:
> user=> (time (filter identity [ nil 1 2 nil 4]))
> "Elapsed time: 0.053219 msecs"
> (1 2 4)
>
> user=> (time (remove nil? [ nil 1 2 nil 4]))
> "Elapsed time: 0.065092 msecs"
> (1 2 4)
>
> Choose the flavor your prefer...
>
> Luc P.
>
Those aren't exactly equiv
user=> (time (remove nil? (repeat 100 nil)))
"Elapsed time: 0.079312 msecs"
()
user=> (time (filter identity (repeat 100 nil)))
"Elapsed time: 0.070249 msecs"
()
Seems like filter is a bit faster, however YMMV
On Nov 16, 4:48 pm, Glen Rubin wrote:
> What is the fastest way to remove nils
user=> (time (filter identity [ nil 1 2 nil 4]))
"Elapsed time: 0.053219 msecs"
(1 2 4)
user=> (time (remove nil? [ nil 1 2 nil 4]))
"Elapsed time: 0.065092 msecs"
(1 2 4)
Choose the flavor your prefer...
Luc P.
Glen Rubin wrote ..
> What is the fastest way to remove nils from a sequence?
>
>
16 matches
Mail list logo