Expression problem

The styles of programming languages make it harder or easier to either add a new operation or a new function

You can think about a table where the rows are classes(types) and columns are the methods implemented by the classes.

For OOP languages, adding new classes, hence new rows is easy but adding new methods means all the new classes now need to implement the new method.

For functional languages, adding new methods is easy but adding new types is hard.

It's a tradeoff. As is with everything.