Типи суми, як правило, менш корисні для основних мов ОО, оскільки вони вирішують проблему, подібну до підтипу OO. Один із способів дивитися на них полягає в тому, що вони обидва обробляють open
підтипи, але OO - тобто можна додати довільні підтипи до батьківського типу, а типи суми, closed
тобто один визначає наперед, які підтипи є дійсними.
Зараз багато мов ОО поєднують підтипи з іншими поняттями, такими як успадковані структури, поліморфізм, референтне введення тощо, щоб зробити їх загалом кориснішими. Наслідком цього є те, що вони, як правило, займаються більшою роботою над створенням (з класами та конструкторами та ін.), Так що, як правило, не використовуються для таких речей, як Result
s та Option
s тощо, поки загальне введення тексту не стане загальним.
Я б також сказав, що зосередження уваги на реальних відносинах, про які більшість людей дізналися, коли вони розпочали програмування OO, наприклад, Dog isa Animal, означало, що Integer isa Result або Error isa Result здаються трохи чужими. Хоча ідеї досить схожі.
Щодо того, чому функціональні мови можуть вважати за краще закрите введення тексту перед відкритим введенням, одна з можливих причин полягає в тому, що вони, як правило, віддають перевагу відповідності шаблону. Це корисно для функціонального поліморфізму, але воно також дуже добре працює із закритими типами, оскільки компілятор може статично перевірити, що відповідність охоплює всі підтипи. Це може змусити мову відчувати себе більш послідовно, хоча я не вірю, що є якась притаманна користь (я можу помилитися).