All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cyclops.instances.free.FreeApInstances Maven / Gradle / Ivy

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);
      }
    };


  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy