cyclops.instances.free.FreeApInstances Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cyclops-pure Show documentation
Show all versions of cyclops-pure Show documentation
Platform for Functional Reactive Programming with Java 8
The newest version!
package cyclops.instances.free;
import com.oath.cyclops.hkt.DataWitness;
import com.oath.cyclops.hkt.Higher;
import cyclops.free.FreeAp;
import cyclops.typeclasses.functor.Functor;
import cyclops.typeclasses.monad.Applicative;
import lombok.experimental.UtilityClass;
import java.util.function.Function;
@UtilityClass
public class FreeApInstances {
public static Applicative> applicative(cyclops.typeclasses.Pure pure, Functor functor) {
return new Applicative>() {
@Override
public Higher, R> ap(Higher, ? extends Function> fn, Higher, T> apply) {
FreeAp> f = FreeAp.narrowK(fn);
FreeAp a = FreeAp.narrowK(apply);
return a.ap(f);
}
@Override
public Higher, R> map(Function fn, Higher, T> ds) {
return FreeAp.narrowK(ds).map(fn);
}
@Override
public Higher, T> unit(T value) {
return FreeAp.pure(value);
}
};
}
}