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

org.javafunk.funk.UnaryFunctions Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2011-Present Funk committers.
 * All rights reserved.
 *
 * The software in this package is published under the terms of the BSD
 * style license a copy of which has been included with this distribution in
 * the LICENSE.txt file.
 */
package org.javafunk.funk;

import org.javafunk.funk.functors.functions.UnaryFunction;

public class UnaryFunctions {
    private UnaryFunctions() {}

    public static  UnaryFunction identity() {
        return new UnaryFunction() {
            @Override public T call(T input) {
                return input;
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second) {
        return new UnaryFunction() {
            @Override public S call(Q input) {
                return second.call(first.call(input));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third) {
        return new UnaryFunction() {
            @Override public T call(Q input) {
                return third.call(second.call(first.call(input)));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth) {
        return new UnaryFunction() {
            @Override public U call(Q input) {
                return fourth.call(third.call(second.call(first.call(input))));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth,
            final UnaryFunction fifth) {
        return new UnaryFunction() {
            @Override public V call(Q input) {
                return fifth.call(fourth.call(third.call(second.call(first.call(input)))));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth,
            final UnaryFunction fifth,
            final UnaryFunction sixth) {
        return new UnaryFunction() {
            @Override public W call(Q input) {
                return sixth.call(fifth.call(fourth.call(third.call(second.call(first.call(input))))));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth,
            final UnaryFunction fifth,
            final UnaryFunction sixth,
            final UnaryFunction seventh) {
        return new UnaryFunction() {
            @Override public X call(Q input) {
                return seventh.call(sixth.call(fifth.call(fourth.call(third.call(second.call(first.call(input)))))));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth,
            final UnaryFunction fifth,
            final UnaryFunction sixth,
            final UnaryFunction seventh,
            final UnaryFunction eighth) {
        return new UnaryFunction() {
            @Override public Y call(Q input) {
                return eighth.call(seventh.call(sixth.call(fifth.call(fourth.call(third.call(second.call(first.call(input))))))));
            }
        };
    }

    public static  UnaryFunction compose(
            final UnaryFunction first,
            final UnaryFunction second,
            final UnaryFunction third,
            final UnaryFunction fourth,
            final UnaryFunction fifth,
            final UnaryFunction sixth,
            final UnaryFunction seventh,
            final UnaryFunction eighth,
            final UnaryFunction ninth) {
        return new UnaryFunction() {
            @Override public Z call(Q input) {
                return ninth.call(eighth.call(seventh.call(sixth.call(fifth.call(fourth.call(third.call(second.call(first.call(input)))))))));
            }
        };
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy