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

fj.function.Effect1 Maven / Gradle / Ivy

Go to download

Functional Java is an open source library that supports closures for the Java programming language

The newest version!
package fj.function;

import fj.F;
import fj.P;
import fj.P1;
import fj.Unit;

import java.util.function.Consumer;

import static fj.Unit.unit;

public interface Effect1 extends Consumer {

	void f(A a);

	default void accept(A a) {
		f(a);
	}

	default  F bind(final F> g) {
		return a -> {
			return g.f(toF().f(a)).f(a);
		};
	}

	default void apply(A a) {
		f(a);
	}

	default  Effect1 contramap(F f) {
		return o(f);
	}

	default  F map(F f) {
		return a -> f.f(toF().f(a));
	}

	default  F andThen(final F f) {
		return map(f);
	}

	default  Effect1 o(final F f) {
		return c -> f(f.f(c));
	}

	default F toF() {
		return a -> {
			f(a);
			return unit();
		};
	}

	default  TryEffect1 toTryEffect1() {
		return a -> f(a);
	}


	default  Try1 toTry1() {
		return a -> toF().f(a);
	}

	static  Effect1 fromF(F f) {
		return a -> f.f(a);
	}

	default  F dimap(F f, F g) {
		return c -> g.f(toF().f(f.f(c)));
	}

	default P1 partial(final A a) {
		return P.lazy(() -> toF().f(a));
	}



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy