![JAR search and dependency download from the Maven repository](/logo.png)
com.g2forge.alexandria.expression.numeric.NumericEnvironment Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ax-expression Show documentation
Show all versions of ax-expression Show documentation
A library for expressions and their evaluation. Includes a basic implementation for math.
package com.g2forge.alexandria.expression.numeric;
import java.util.function.BiPredicate;
import java.util.function.Function;
import java.util.function.Predicate;
import com.g2forge.alexandria.expression.IEnvironment;
import com.g2forge.alexandria.java.core.helpers.HObject;
import com.g2forge.alexandria.java.fluent.optional.IOptional;
import com.g2forge.alexandria.java.fluent.optional.NonNullOptional;
import com.g2forge.alexandria.java.fluent.optional.factory.IOptionalFactory;
import com.g2forge.alexandria.java.fluent.optional.function.IOptionalFunction;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class NumericEnvironment implements IEnvironment {
public static final IFactory FACTORY = new IFactory() {
@Override
public NumericEnvironment wrap(IOptionalFunction function) {
return new NumericEnvironment(function);
}
};
protected final IOptionalFunction function;
@Override
public Function fallback(Function super NumericVariable, ? extends INumericExpression> fallback) {
return function.fallback(fallback);
}
@Override
public IOptional lookup(NumericVariable variable) {
return NonNullOptional.FACTORY.upcast(function.apply(variable));
}
@Override
public NumericEnvironment override(NumericEnvironment override) {
return new NumericEnvironment(function.override(override.function));
}
@Override
public NumericEnvironment recursive(BiPredicate super NumericVariable, ? super NumericVariable> terminate) {
return recursive(terminate, true, NumericVariable.class);
}
@Override
public NumericEnvironment recursive(BiPredicate super NumericVariable, ? super NumericVariable> terminate, boolean prior, Class type) {
return new NumericEnvironment(function.recursive(terminate, prior, type));
}
@Override
public NumericEnvironment restrict(Predicate super NumericVariable> predicate, IOptionalFactory factory) {
if ((factory != null) && (factory != FACTORY.getOptionalFactory())) throw new IllegalArgumentException("Wrong optional factory was specified");
return new NumericEnvironment(function.restrict(predicate, FACTORY.getOptionalFactory()));
}
@Override
public String toString() {
return HObject.toString(this, function);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy