3 ms·
Worth noting that most of these criticisms also apply to existential types, which are fairly common in functional languages (e.g. Haskell).
by jasonhansel 8y ago
Worth noting that most of these criticisms also apply to existential types, which are fairly common in functional languages (e.g. Haskell).
- kjeetgill 8y agoUnfamiliar with Haskell. What are existential types.
- l_dopa 8y agoThat's not entirely accurate. Abstract data types (e.g. ML modules) can also be modeled as existential types and don't have the same problems. I think it's the particular combination of only having nominal typing, only allowing the oo-flavor of data abstraction, and encouraging programming with state and using inheritance for code reuse that leads to the object-spaghetti nonsense in heavily-oo Java/C++ codebases.
- jasonhansel 8y agoI just mean that (at least in Haskell) existential types provide information hiding & combine functions with data. In fact, they're implemented with dynamic dispatch, just as with OOP. The problem is not that OO languages have these features; the problem is that they lack other features common to functional languages.