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
(filter (comp not nit?) [nil 2 3 nil false true 4])
-
(remove nil? [...])
On Fri, Oct 26, 2012 at 12:53 PM, kevin roth
kevin.c.zucker...@gmail.com 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
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
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,
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
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 kwess...@gmail.com wrote:
On Wed, Nov 17, 2010 at 7:55 PM, Robert McIntyre r...@mit.edu wrote:
So, just to be clear,
user (def nil-seq
On Thu, Nov 18, 2010 at 10:47 AM, Glen Rubin rubing...@gmail.com 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
Miki miki.teb...@gmail.com 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
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
On Wed,
On Wed, Nov 17, 2010 at 7:55 PM, Robert McIntyre r...@mit.edu 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 (remove
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 rubing...@gmail.com wrote ..
What is the fastest way to remove nils from a
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 rubing...@gmail.com wrote:
What is the fastest way
On 17 November 2010 12:37, lprefonta...@softaddicts.ca 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
(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
Oups.. :)
Stuart Campbell stu...@harto.org wrote ..
On 17 November 2010 12:37, lprefonta...@softaddicts.ca 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)
Re-oups, Clojure 1.0 to 1.2 upgrade glitch :)
Mark Engelberg mark.engelb...@gmail.com 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
16 matches
Mail list logo