Функциональные и объектно-ориентированные конструкции облегчают различные типы расширений. Учитывая дискриминационное объединение в функциональной настройке, легко определить любое количество функций, которые работают с этим типом, но сложно добавить дополнительные типы к типу, поскольку для этого потребуется вернуться к добавлению дополнительного случая в каждую функцию, шаблон которой соответствует по типу. С другой стороны, учитывая базовый тип (или интерфейс) настройки ОО, легко добавлять новые подтипы, но добавить новые операции к базовому типу сложно, поскольку для этого может потребоваться изменение существующих подтипов для добавления реализации новой операции. каждому.
В зависимости от типа расширяемости, наиболее подходящего для выполняемой задачи, функциональный или объектно-ориентированный подход может иметь больше смысла, поэтому хорошо иметь обе опции. Одним из популярных подходов является использование функционального подхода «в малом» и ОО-подхода «в целом» (например, он упоминается в этого подкаста с Люком Хобаном).