Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
*
* @param value1 top level Set
* @param value2 Nested Set
* @param value3 Nested Set
* @param value4 Nested Set
* @param yieldingFunction Generates a result per combination
* @return Set with an element per combination of nested publishers generated by the yielding function
*/
public static Set forEach4(Set extends T1> value1,
Function super T1, ? extends Set> value2,
BiFunction super T1, ? super R1, ? extends Set> value3,
Fn3 super T1, ? super R1, ? super R2, ? extends Set> value4,
Fn4 super T1, ? super R1, ? super R2, ? super R3, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.flatMap(ina -> {
Set b = value3.apply(in,ina);
return b.flatMap(inb -> {
Set c = value4.apply(in,ina,inb);
return c.map(in2 -> yieldingFunction.apply(in, ina, inb, in2));
});
});
});
}
/**
* Perform a For Comprehension over a Set, accepting 3 generating function.
* This results in a four level nested internal iteration over the provided Publishers.
*
*
* @param value1 top level Set
* @param value2 Nested Set
* @param value3 Nested Set
* @param value4 Nested Set
* @param filterFunction A filtering function, keeps values where the predicate holds
* @param yieldingFunction Generates a result per combination
* @return Set with an element per combination of nested publishers generated by the yielding function
*/
public static Set forEach4(Set extends T1> value1,
Function super T1, ? extends Set> value2,
BiFunction super T1, ? super R1, ? extends Set> value3,
Fn3 super T1, ? super R1, ? super R2, ? extends Set> value4,
Fn4 super T1, ? super R1, ? super R2, ? super R3, Boolean> filterFunction,
Fn4 super T1, ? super R1, ? super R2, ? super R3, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.flatMap(ina -> {
Set b = value3.apply(in,ina);
return b.flatMap(inb -> {
Set c = value4.apply(in,ina,inb);
return c.filter(in2->filterFunction.apply(in,ina,inb,in2))
.map(in2 -> yieldingFunction.apply(in, ina, inb, in2));
});
});
});
}
/**
* Perform a For Comprehension over a Set, accepting 2 generating function.
* This results in a three level nested internal iteration over the provided Publishers.
*
*
*
*
* @param value1 top level Set
* @param value2 Nested Set
* @param value3 Nested Set
* @param yieldingFunction Generates a result per combination
* @return Set with an element per combination of nested publishers generated by the yielding function
*/
public static Set forEach3(Set extends T1> value1,
Function super T1, ? extends Set> value2,
BiFunction super T1, ? super R1, ? extends Set> value3,
Fn3 super T1, ? super R1, ? super R2, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.flatMap(ina -> {
Set b = value3.apply(in,ina);
return b.map(in2 -> yieldingFunction.apply(in, ina, in2));
});
});
}
/**
* Perform a For Comprehension over a Set, accepting 2 generating function.
* This results in a three level nested internal iteration over the provided Publishers.
*
*
* @param value1 top level Set
* @param value2 Nested publisher
* @param value3 Nested publisher
* @param filterFunction A filtering function, keeps values where the predicate holds
* @param yieldingFunction Generates a result per combination
* @return
*/
public static Set forEach3(Set extends T1> value1,
Function super T1, ? extends Set> value2,
BiFunction super T1, ? super R1, ? extends Set> value3,
Fn3 super T1, ? super R1, ? super R2, Boolean> filterFunction,
Fn3 super T1, ? super R1, ? super R2, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.flatMap(ina -> {
Set b = value3.apply(in,ina);
return b.filter(in2->filterFunction.apply(in,ina,in2))
.map(in2 -> yieldingFunction.apply(in, ina, in2));
});
});
}
/**
* Perform a For Comprehension over a Set, accepting an additonal generating function.
* This results in a two level nested internal iteration over the provided Publishers.
*
*
*
* @param value1 top level Set
* @param value2 Nested publisher
* @param yieldingFunction Generates a result per combination
* @return
*/
public static Set forEach2(Set extends T> value1,
Function super T, Set> value2,
BiFunction super T, ? super R1, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.map(in2 -> yieldingFunction.apply(in, in2));
});
}
/**
*
*
*
*
* @param value1 top level Set
* @param value2 Nested publisher
* @param filterFunction A filtering function, keeps values where the predicate holds
* @param yieldingFunction Generates a result per combination
* @return
*/
public static Set forEach2(Set extends T> value1,
Function super T, ? extends Set> value2,
BiFunction super T, ? super R1, Boolean> filterFunction,
BiFunction super T, ? super R1, ? extends R> yieldingFunction) {
return value1.flatMap(in -> {
Set a = value2.apply(in);
return a.filter(in2->filterFunction.apply(in,in2))
.map(in2 -> yieldingFunction.apply(in, in2));
});
}
public static Active allTypeclasses(HashSet array){
return Active.of(widen(array), HashSets.Instances.definitions());
}
public static Nested mapM(HashSet array, Function super T,? extends Higher> fn, InstanceDefinitions defs){
HashSet> e = array.map(fn);
HashSetKind> lk = widen(e);
return Nested.of(lk, HashSets.Instances.definitions(), defs);
}
/**
* Companion class for creating Type Class instances for working with HashSets
*
*/
@UtilityClass
public static class Instances {
public static InstanceDefinitions definitions() {
return new InstanceDefinitions() {
@Override
public Functor functor() {
return Instances.functor();
}
@Override
public Pure unit() {
return Instances.unit();
}
@Override
public Applicative applicative() {
return Instances.zippingApplicative();
}
@Override
public Monad monad() {
return Instances.monad();
}
@Override
public Maybe> monadZero() {
return Maybe.just(Instances.monadZero());
}
@Override
public Maybe> monadPlus() {
return Maybe.just(Instances.monadPlus());
}
@Override
public Maybe> monadPlus(Monoid> m) {
return Maybe.just(Instances.monadPlus(m));
}
@Override
public Maybe> traverse() {
return Maybe.just(Instances.traverse());
}
@Override
public Maybe> foldable() {
return Maybe.just(Instances.foldable());
}
@Override
public Maybe> comonad() {
return Maybe.none();
}
@Override
public Maybe> unfoldable() {
return Maybe.just(Instances.unfoldable());
}
};
}
/**
*
* Transform a hashSet, mulitplying every element by 2
*
*
* @return Type class for combining HashSets by concatenation
*/
public static MonadPlus monadPlus(){
Monoid> m = Monoid.of(widen(HashSet.empty()), Instances::concat);
Monoid> m2= (Monoid)m;
return General.monadPlus(monadZero(),m2);
}
/**
*
*