Simon Dobson在SBCL中发现Common Lisp数组子类型机制的意外行为:在使用(unsigned-byte 16)等约束类型配合短向量语法#nA()时,类型检查失败,因为编译器将短向量赋为simple-vector类型而非simple-array。根本原因是编译器优化时保留了未指定元素类型的简向量化,导致参数化数组类型的子类型检查失效。
背景
Common Lisp的类型系统以表达能力和复杂性著称,子类型关系是语言的核心特性之一。SBCL是一个流行的高性能Common Lisp编译器,会根据声明的元素类型对数组存储进行激进优化。
- 来源
- Lobsters
- 发布时间
- 2026年8月15日 00:08
- 评分
- 5.0 / 10