package coffee.liz.lambda.bind; import coffee.liz.lambda.eval.Environment; import coffee.liz.lambda.eval.Value; import lombok.Getter; import java.util.concurrent.atomic.AtomicInteger; /** * Identity function that has a side effect which internally counts invocations. */ @Getter public class Tick implements ExternalBinding { private final String name = "Tick"; private final AtomicInteger counter = new AtomicInteger(0); @Override public Value apply(final Environment environment, final Value value) { counter.incrementAndGet(); return value; } }