Typy sum byłyby na ogół mniej przydatne w głównych językach OO, ponieważ rozwiązują one podobny typ problemu jak podtypowanie OO. Jednym ze sposobów patrzenia na nie jest to, że oba obsługują open
podtypy, ale OO polega na tym, że można dodawać dowolne podtypy do typu rodzica, a typy sum to closed
np. Określa się z góry, które podtypy są prawidłowe.
Teraz wiele języków OO łączy podtypy z innymi pojęciami, takimi jak odziedziczone struktury, polimorfizm, pisanie odniesień itp., Aby były ogólnie bardziej użyteczne. Konsekwencją jest to, że wydają się być więcej pracy, aby skonfigurować (z klas i konstruktorów i etażerka), więc raczej nie być używane do takich rzeczy jak Result
S i Option
S i tak dalej, aż generic wpisując stały się powszechne.
Powiedziałbym również, że skupienie się na relacjach w świecie rzeczywistym, których większość ludzi nauczyła się, kiedy rozpoczęli programowanie OO, np. Dog isa Animal, oznaczało, że liczba całkowita isa wynik lub błąd isa wynik wydają się nieco obce. Chociaż pomysły są dość podobne.
Co do tego, dlaczego języki funkcjonalne mogą preferować pisanie zamknięte niż pisanie otwarte, jednym z możliwych powodów jest to, że preferują dopasowanie wzorca. Jest to przydatne w przypadku polimorfizmu funkcji, ale działa również bardzo dobrze w przypadku typów zamkniętych, ponieważ kompilator może statycznie sprawdzić, czy dopasowanie obejmuje wszystkie podtypy. Może to sprawić, że język będzie bardziej spójny, chociaż nie sądzę, aby przyniosła to jakąś naturalną korzyść (mogę się mylić).