вот я тоже об этом думал
но хотябы функиональные языки умаеют падать при комплияции с ошибкой non exhaustive match
Ну в книге он привёл пример, где в зависимости от варианта перечисления что-то делалось в "плохой" функции со switch. Потом он вынес это всё хозяйство в отдельный интерфейс с реализациями и абстрактной фабрикой, в методе которой уже был switch. Таким образом, можно добавлять новые варианты перечисления, не затрагивая существующий код. Но он забыл (или намеренно не упомянул), что при добавлении нового метода всё-таки придётся менять код.