fj.function.BigIntegers Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of functionaljava Show documentation
Show all versions of functionaljava Show documentation
Functional Java is an open source library that supports closures for the Java programming language
package fj.function;
import fj.F;
import fj.F2;
import fj.Monoid;
import fj.data.List;
import static fj.Function.curry;
import java.math.BigInteger;
/**
* Curried functions over Integers.
*
* @version %build.number%
*/
public final class BigIntegers {
private BigIntegers() {
throw new UnsupportedOperationException();
}
/**
* Curried Integer addition.
*/
public static final F> add =
curry((F2) BigInteger::add);
/**
* Curried Integer multiplication.
*/
public static final F> multiply =
curry(BigInteger::multiply);
/**
* Curried Integer subtraction.
*/
public static final F> subtract =
curry((F2) BigInteger::subtract);
/**
* Negation.
*/
public static final F negate = BigInteger::negate;
/**
* Absolute value.
*/
public static final F abs = BigInteger::abs;
/**
* Remainder.
*/
public static final F> remainder =
curry(BigInteger::remainder);
/**
* Power.
*/
public static final F> power = curry(BigInteger::pow);
/**
* Sums a list of big integers.
*
* @param ints A list of big integers to sum.
* @return The sum of the big integers in the list.
*/
public static BigInteger sum(final List ints) {
return Monoid.bigintAdditionMonoid.sumLeft(ints);
}
/**
* Returns the product of a list of big integers.
*
* @param ints A list of big integers to multiply together.
* @return The product of the big integers in the list.
*/
public static BigInteger product(final List ints) {
return Monoid.bigintMultiplicationMonoid.sumLeft(ints);
}
}