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

com.g2forge.alexandria.expression.numeric.AActiveNumericExpression Maven / Gradle / Ivy

Go to download

A library for expressions and their evaluation. Includes a basic implementation for math.

There is a newer version: 0.0.18
Show newest version
package com.g2forge.alexandria.expression.numeric;

import java.util.function.Supplier;

import com.g2forge.alexandria.expression.eval.IEvaluator;
import com.g2forge.alexandria.java.function.cache.FixedCachingSupplier;

public abstract class AActiveNumericExpression implements INumericExpression {
	protected final Supplier reduction = new FixedCachingSupplier<>(() -> {
		final IEvaluator evaluator = EVAL.get();
		return evaluator.reduce(this, () -> reduceInternal(evaluator));
	});

	@Override
	public INumericExpression apply(NumericEnvironment environment) {
		final IEvaluator evaluator = EVAL.get();
		return evaluator.apply(this, environment, () -> applyInternal(evaluator, environment));
	}

	protected abstract INumericExpression applyInternal(IEvaluator evaluator, NumericEnvironment environment);

	@Override
	public INumericExpression reduce() {
		return reduction.get();
	}

	protected abstract INumericExpression reduceInternal(IEvaluator evaluator);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy