They are not contradictory in that the math doesn’t work out. They are contradictory in that it is not possible to write one
addSubtract function that returns both of those values. The first example strictly returns a number after 3 iterations, while the second example strictly returns a function after 3 iterations. How can one function do both?
At the very least, the function would need to be arbitrarily stateful instead of extensible, as another commentor provided as an example. This article covers a stateless and extensible implementation of a possible solution.