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

vertx.effect.exp.Pair Maven / Gradle / Ivy

There is a newer version: 5.0.0
Show newest version
package vertx.effect.exp;

import io.vavr.Tuple2;
import vertx.effect.Val;
import vertx.effect.core.AbstractVal;

public abstract class Pair extends AbstractVal> {

    public static  Pair sequential(final Val _1,
                                               final Val _2) {
        return new SequentialPair<>(_1,
                                    _2
        );
    }

    public static  Pair parallel(final Val _1,
                                             final Val _2) {
        return new ParallelPair<>(_1,
                                  _2
        );
    }

    public abstract Val _1();

    public abstract Val _2();

    public static  Val race(final Pair pair) {
        if (pair == null)
            return Cons.failure(new IllegalArgumentException("Pair.race: pair is null"));
        return ListExp.parallel(pair._1(),
                                pair._2()
                               )
                      .race();
    }


}