This essay says that inheritance is harmful and if possible you should “ban inheritance completely”. You see these arguments a lot, as well as things like “prefer composition to inheritance”. A lot of these arguments argue that in practice inheritance has problems. But they don’t preclude inheritance working in another context, maybe with a better language syntax. And it doesn’t explain why inheritance became so popular in the first place. I want to explore what’s fundamentally challenging about inheritance and why we all use it anyway.



OK, I think I’m getting it.
A product is a set that this is the result of an ordered cartesian products.
Car = String X String x u8.An enum is a series of "or"s.
can also be thought of as
Animal = Dog | Cat | Giraffe | Chimpanzee. WhereDogis a type that only has single value in its set akaAnimal = {1} | {2} | {3} | {4}, but it could also be strings, or other objects. Rust however allows more complex objects:In this case is
Something(u32)the equivalent of any “tagged”u32, meaning in memory it’s something like aTag + 32 bitswhereTagis a constant string of bits, maybe itself au32? Wouldn’t that make it a product type?But then
LotsOfThingsis itself a product typeLotsOfThings = bool x String.So to put it all together
ComplexEnum = Nothing | TaggedU32 | (bool x String)? Is that correct?Anti Commercial-AI license
Pretty much, yeah. But just be aware the tags are effectively unique constants, so each has only one value. For consistency I would write it as:
ComplexEnum = Nothing | Something(u32) | LotsOfThings(bool x String)In this notation,
Something(u32)could also be written as1 x u32because tags are constants.OK, so finally I get it. It’s pity none of the blogs I’ve read or wikipedia articles in existence spell it out this way. Instead it’s a bunch of math mumbo jumbo.
Thanks for helping me reach understanding 🙏 And thanks to @[email protected] too.
Anti Commercial-AI license