E-Ink 新闻日报

返回列表

Lisp子类型中的意外行为

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