A reducer is the component in a pipeline that reduces the pipe size from a larger to a smaller bore (inner diameter). A reducer allows for a change in pipe size to meet hydraulic flow requirements of the system, or to adapt to existing piping of a different size. So how is it related to software engineering?
The name reducer is related to the concept of a reducer in functional programming. The reducer consolidates actions into a single object representing application state.
- The reducer has the signature (state, action) => newState.
- The reducer does not mutate the state it is given, but returns a new one
If you ask me, the name Reducer is just a name, like Marty.js is the name for Marty.js and a DeLorean is the name for DeLorean. Both appear to be Flax flavors similar to Redux.