interface Eff<A, B> { | |
B f(A a); | |
} | |
class Disfunction { | |
public static <A, B> Eff<A, B> vary(final Eff<? super A, ? extends B> f) { | |
return a -> f.f(a); | |
} | |
public static <C, A extends C, B, D extends B> Eff<Eff<C, D>, Eff<A, B>> vary() { | |
return Disfunction::<A, B>vary; | |
} | |
public static <C, A extends C, B, D extends B> Eff<Eff<C, D>, Eff<A, B>> vary1() { | |
return Disfunction::vary; | |
} | |
} |