reduce

abstract fun reduce(action: Action, state: S): S