The current approach to functional programming only takes into consideration one piece of data going through the pipeline. This approach makes a lot of sense when you have a very linear flow, where we mutate the data along the way. The code doesn't hold well when we need to create another piece of data and keep the original data to use downstream.
A simple example would be:
const consolidateFilters = (fieldSet) => {
const value = concatFiltersAndParameters(fieldSet)
return flow([set('filters', value), omit('parameters')])(fieldSet)