Hi all,
in the following, set is clojure.set, and r is clojure.core reducers.
Why is
user (reduce set/intersection (map set [[1 2] [3 1] [1 3]]))
#{1}
but
user (reduce set/intersection (r/map set [[1 2] [3 1] [1 3]]))
ArityException Wrong number of args (0) passed to:
The reason you can't get this to work is that r/map returns a reducible
not a coll for reduce to operate on. I'm not sure of a solution because
I'm not familiar with core.reducers. But reading this:
http://clojure.com/blog/2012/05/08/reducers-a-library-and-model-for-collection-processing.html
Jarrod Swart jcsw...@gmail.com writes:
The reason you can't get this to work is that r/map returns a reducible
not a coll for reduce to operate on.
Ah, indeed. I couldn't see the forest for the trees.
I'm not sure of a solution because I'm not familiar with
core.reducers.
This works:
Ah cool, thanks for posting your solution!
On Friday, January 24, 2014 3:29:49 PM UTC-5, Tassilo Horn wrote:
Jarrod Swart jcs...@gmail.com javascript: writes:
The reason you can't get this to work is that r/map returns a
reducible
not a coll for reduce to operate on.
Ah, indeed. I
An interesting question this raises is if there is any sensible way to
define (intersection). It would need to behave as an identity element for
intersection, so would need to behave as a set (so, (set? (intersection))
= truthy) that contained everything (so, (contains? (intersection) foo) =
foo
If I understand you correctly I am in agreement. I don't think you could
take this problem to clojure.core.reducers/reduce or fold because the
problem is inherently sequential is it not?
The reduction is basically (intersection (intersection (intersection A B)
C) D).
I was curious of this
On Fri, Jan 24, 2014 at 12:56 PM, Cedric Greevey cgree...@gmail.com wrote:
An interesting question this raises is if there is any sensible way to
define (intersection). It would need to behave as an identity element for
intersection, so would need to behave as a set (so, (set? (intersection))
Intersection is associative and commutative: (intersection A B) =
(intersection B A) and (intersection A (intersection B C)) = (intersection
(intersection A B) C) = the elements common to all three sets. So it's
actually perfectly well-founded for use with reducers, at least in
principle, and
Good points. But the identity thing is still what gets me. What is the
identity of an intersection?
Like you said it can't be #{}. If you seed an intersection with #{} you
get #{}, so you can't intersect from the empty set. The identity for an
intersection is whatever the common element
No, the identity for intersection is a set that has everything, as
(intersection A Everything) = A no matter what A is.
On Fri, Jan 24, 2014 at 7:38 PM, Jarrod Swart jcsw...@gmail.com wrote:
Good points. But the identity thing is still what gets me. What is the
identity of an intersection?
Okay, I see now.
Thanks for the Socratic dialogue, at the onset of the day I knew nothing
about core.reducers. I feel fairly conversational now!
On Friday, January 24, 2014 7:44:03 PM UTC-5, Cedric Greevey wrote:
No, the identity for intersection is a set that has everything, as
11 matches
Mail list logo