In summary, the expression problem presents as different problems for object-oriented and functional programming paradigms:
In OOP, it presents as difficulty adding new operations to existing types, which is easy when just using functions;
In functional programming, it presents as difficulty making existing operations apply to new types, which is easy in OOP.