The article explains why immutable and mutable data structures cannot be subtypes of each other in statically typed programming languages. While mutable structures provide all operations of immutable ones, they violate the Liskov substitution principle because immutable structures carry an implicit contract that values remain constant, which mutable structures break. Ad hoc polymorphism mechanisms like type classes offer a practical solution.