namespace InnovEnergy.Lib.Utils;

public static class PointFree
{
    public static Action<T> Pipe<T, R>(this Func<T, R> inner, Action<R> outer)
    {
        return tx => outer(inner(tx));
    }

    public static Func<T, R2> Pipe<T, R1, R2>(this Func<T, R1> inner, Func<R1, R2> outer)
    {
        return tx => outer(inner(tx));
    }


    public static Func<R2> Pipe<R1, R2>(this Func<R1> inner, Func<R1, R2> outer)
    {
        return () => outer(inner());
    }
    
}