In functional languages it is easy to add “verbs” to a system, all you have to do is write a new function. In object oriented languages it is easy to add “nouns” to a system, all you have to do in inherit from the base class.

The opposite is usually hard though. Add a new construct to your algebraic data type and you’ll have to update every function you wrote. To add a new method to your object system you may have to edit the base class, which might be inaccessible.

Multimethods are an elegant solution to this.