Por qué mutable no es subtipo de inmutable, ni al revés

Why isn't mutable a subtype of immutable, or vice versa?

El principio de sustitución de Liskov impide que los pares mutables e inmutables formen una jerarquía de subtipos. Aunque un par mutable ofrece todas las operaciones de uno inmutable, el contrato de inmutabilidad —que garantiza que car y cdr devuelven siempre lo mismo— se rompe. Por eso deben ser tipos separados. Las clases de tipo o el duck typing permiten polimorfismo ad hoc, pero sin la seguridad de un subtipo real.

El principio de sustitución se extiende más allá del conjunto de operaciones (métodos) que proporciona un tipo, hasta el contrato implícito que acompaña a esas operaciones.

Más de este día

2026-09-20