Skip to content

Commit fce0df7

Browse files
committed
implement intersection monoid for sets
1 parent 73c31ac commit fce0df7

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

core/src/main/java/fj/Monoid.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22

33
import static fj.F1Functions.dimap;
44

5-
import fj.data.Array;
6-
import fj.data.DList;
7-
import fj.data.List;
8-
import fj.data.IO;
9-
import fj.data.Natural;
10-
import fj.data.Option;
11-
import fj.data.Set;
12-
import fj.data.Stream;
5+
import fj.data.*;
136

147
import static fj.Function.*;
158
import static fj.Semigroup.semigroupDef;
@@ -1109,6 +1102,20 @@ public Set<A> append(Set<A> a1, Set<A> a2) {
11091102
});
11101103
}
11111104

1105+
public static <A> Monoid<Set<A>> setIntersectionMonoid(final Bounded<A> bounded, final Enumerator<A> enumerator, final Ord<A> o) {
1106+
return monoidDef(new Definition<Set<A>>() {
1107+
@Override
1108+
public Set<A> empty() {
1109+
return Set.iteratorSet(o, enumerator.toStream(bounded).iterator());
1110+
}
1111+
1112+
@Override
1113+
public Set<A> append(Set<A> a1, Set<A> a2) {
1114+
return a1.intersect(a2);
1115+
}
1116+
});
1117+
}
1118+
11121119
/**
11131120
* A monoid for the maximum of elements with ordering o.
11141121
* @deprecated since 4.7. Use {@link Ord#maxMonoid(Object)}

0 commit comments

Comments
 (0)