本文解释了为什么可变与不可变的数据结构变体不能作为彼此的子类型或超类型,依据是Liskov替换原则。文章以不可变/可变配对结构为例,说明可变配对引入了破坏不可变行为契约的新操作(如set-car!/set-cdr!)。
背景
本文讨论了编程语言设计论坛中关于可变与不可变数据结构之间类型层次关系的常见疑问。
- 来源
- Lobsters
- 发布时间
- 2026年9月18日 23:30
- 评分
- 6.0 / 10
本文解释了为什么可变与不可变的数据结构变体不能作为彼此的子类型或超类型,依据是Liskov替换原则。文章以不可变/可变配对结构为例,说明可变配对引入了破坏不可变行为契约的新操作(如set-car!/set-cdr!)。
本文讨论了编程语言设计论坛中关于可变与不可变数据结构之间类型层次关系的常见疑问。