Currently this hangs, makes my machine quickly run out of memory and swap.

(clojure.set/intersection #{1 2} (range))

The problem seems to be that count is called on both arguments to find the 
smallest set.
Finding the shortest of 2 seqs lazily shouldn't be a problem, but another 
problem I can spot would be that contains? should be used only for some 
data structures, like hash-set, otherwise I guess "some" could be used, 
which would do the right thing, like in:

(some #{1} (range))
1
(some #{2} (range))
2
At this point execution will stop and return the #{1 2} as all elements of 
the smallest set have been tested.

Would it be possible and worth the added complication to fix this ?
There could also be some potential performance improvements, for example 
removing count might be slightly more efficient when big sets are involved.

I came up with this while trying to solve 4clojure #108 "find the smallest 
single number which appears in all of the sequences".
My approach to the 4clojure problem might be wrong altogether, yet I can 
imagine removing this limitation could be useful for some real problems too.

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to