public class LiftMFunctions
extends java.lang.Object
| Constructor and Description |
|---|
LiftMFunctions() |
| Modifier and Type | Method and Description |
|---|---|
static <U,R> java.util.function.Function<AnyM<U>,AnyM<R>> |
liftM(java.util.function.Function<U,R> fn)
Lift a function so it accepts an AnyM (any monad) and returns an AnyM
|
static <U1,U2,R> java.util.function.BiFunction<AnyM<U1>,AnyM<U2>,AnyM<R>> |
liftM2(java.util.function.BiFunction<U1,U2,R> fn)
Lift a function so it accepts a Monad and returns a Monad (simplex view of a wrapped Monad)
AnyM view simplifies type related challenges.
|
static <U1,U2,R> java.util.function.Function<AnyM<U1>,java.util.function.Function<AnyM<U2>,AnyM<R>>> |
liftM2(java.util.function.Function<U1,java.util.function.Function<U2,R>> fn)
Lift a Curried Function into Monadic form
|
static <U1,U2,U3,R> |
liftM3(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,R>>> fn)
Lift a Curried Function into Monadic form
|
static <U1,U2,U3,R> |
liftM3(com.aol.cyclops.functions.TriFunction<U1,U2,U3,R> fn)
Lift a TriFunction into Monadic form.
|
static <U1,U2,U3,U4,R> |
liftM4(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,java.util.function.Function<U4,R>>>> fn)
Lift a Curried Function into Monadic form
|
static <U1,U2,U3,U4,R> |
liftM4(com.aol.cyclops.functions.QuadFunction<U1,U2,U3,U4,R> fn)
Lift a QuadFunction into Monadic form.
|
static <U1,U2,U3,U4,U5,R> |
liftM5(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,java.util.function.Function<U4,java.util.function.Function<U5,R>>>>> fn)
Lift a Curried Function
(5 levels a->b->c->d->e->fn.apply(a,b,c,d,e) ) into Monadic form |
static <U1,U2,U3,U4,U5,R> |
liftM5(com.aol.cyclops.functions.QuintFunction<U1,U2,U3,U4,U5,R> fn)
Lift a QuintFunction (5 parameters) into Monadic form
|
public static <U,R> java.util.function.Function<AnyM<U>,AnyM<R>> liftM(java.util.function.Function<U,R> fn)
fn - public static <U1,U2,R> java.util.function.BiFunction<AnyM<U1>,AnyM<U2>,AnyM<R>> liftM2(java.util.function.BiFunction<U1,U2,R> fn)
//using Lombok val to simplify verbose generics
val divide = LiftMFunctions.liftM2(this::divide);
AnyM<Integer> result = divide.apply(anyM(Try.of(2, ArithmeticException.class)), anyM(Stream.of(10,1,2,3)));
assertThat(result.<Try<List<Integer>,ArithmeticException>>unwrapMonad().get(),equalTo(Arrays.asList(0, 2, 1, 0)));
private Integer divide(Integer a, Integer b){
return a/b;
}
fn - public static <U1,U2,U3,R> com.aol.cyclops.functions.TriFunction<AnyM<U1>,AnyM<U2>,AnyM<U3>,AnyM<R>> liftM3(com.aol.cyclops.functions.TriFunction<U1,U2,U3,R> fn)
TriFunction<AnyM<Double>,AnyM<Entity>,AnyM<String>,AnyM<Integer>> fn = liftM3(this::myMethod);
Now we can execute the Method with Streams, Optional, Futures, Try's etc to transparently inject iteration, null handling, async execution and / or error handlingfn - Function to liftpublic static <U1,U2,U3,U4,R> com.aol.cyclops.functions.QuadFunction<AnyM<U1>,AnyM<U2>,AnyM<U3>,AnyM<U4>,AnyM<R>> liftM4(com.aol.cyclops.functions.QuadFunction<U1,U2,U3,U4,R> fn)
fn - Quad funciton to liftpublic static <U1,U2,U3,U4,U5,R> com.aol.cyclops.functions.QuintFunction<AnyM<U1>,AnyM<U2>,AnyM<U3>,AnyM<U4>,AnyM<U5>,AnyM<R>> liftM5(com.aol.cyclops.functions.QuintFunction<U1,U2,U3,U4,U5,R> fn)
fn - Function to liftpublic static <U1,U2,R> java.util.function.Function<AnyM<U1>,java.util.function.Function<AnyM<U2>,AnyM<R>>> liftM2(java.util.function.Function<U1,java.util.function.Function<U2,R>> fn)
fn - Function to liftpublic static <U1,U2,U3,R> java.util.function.Function<AnyM<U1>,java.util.function.Function<AnyM<U2>,java.util.function.Function<AnyM<U3>,AnyM<R>>>> liftM3(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,R>>> fn)
fn - Function to liftpublic static <U1,U2,U3,U4,R> java.util.function.Function<AnyM<U1>,java.util.function.Function<AnyM<U2>,java.util.function.Function<AnyM<U3>,java.util.function.Function<AnyM<U4>,AnyM<R>>>>> liftM4(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,java.util.function.Function<U4,R>>>> fn)
fn - Function to liftpublic static <U1,U2,U3,U4,U5,R> java.util.function.Function<AnyM<U1>,java.util.function.Function<AnyM<U2>,java.util.function.Function<AnyM<U3>,java.util.function.Function<AnyM<U4>,java.util.function.Function<AnyM<U5>,AnyM<R>>>>>> liftM5(java.util.function.Function<U1,java.util.function.Function<U2,java.util.function.Function<U3,java.util.function.Function<U4,java.util.function.Function<U5,R>>>>> fn)
(5 levels a->b->c->d->e->fn.apply(a,b,c,d,e) ) into Monadic formfn - Function to lift