001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012 013package org.apache.tapestry5.func; 014 015/** 016 * A reducer takes an accumulator value and a single value from a collection and computes a new 017 * accumulator value. 018 * 019 * @param <A> type of accumulator 020 * @param <T> type of collection value 021 * 022 * @since 5.2.0 023 */ 024public interface Reducer<A, T> 025{ 026 /** 027 * Run a computation using the current value of the accumulator and an element (from a Flow), 028 * and return the new accumulator. 029 */ 030 A reduce(A accumulator, T element); 031}