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

net.cassite.f.Applicative Maven / Gradle / Ivy

package net.cassite.f;

import io.vertx.core.Future;

import java.util.function.Function;

public class Applicative implements IMonad>, AsTransformable> {
    private final Monad> monad;

    Applicative(Monad> monad) {
        this.monad = monad;
    }

    @Override
    public  Monad map(Function, U> mapper) {
        return monad.map(mapper::apply);
    }

    @Override
    public  Monad compose(Function, Future> mapper) {
        return monad.compose(mapper::apply);
    }

    public Monad ap(Future fu) {
        return monad.compose(fu::map);
    }
}