common-lisp - 在 Common Lisp 中,符号名称是否有定义的最大长度?
问题描述
我无法在Hyperspec或 Common Lisp: The Language(第二版)中找到这些信息。与实现相关的常量,例如LAMBDA-PARAMETERS-LIMIT
and CALL-ARGUMENT-LIMIT
,但不是类似SYMBOL-NAME-LENGTH-LIMIT
or的东西PRINTABLE-SYMBOL-NAME-MAX-LENGTH
。
名称最长的标准符号是UPDATE-INSTANCE-FOR-DIFFERENT-CLASS
and UPDATE-INSTANCE-FOR-REDEFINED-CLASS
,都是 35 个字符长,所以我认为最多可以取 35 个字符。我不希望给一个符号命名比这更长的东西,但有一天它可能很重要。
解决方案
在 Common Lisp 中,符号的名称是字符串,字符串是向量(一维数组),因此字符串的长度受限于array-dimension-limit
.
根据 CL HyperSpec http://www.lispworks.com/documentation/HyperSpec/Body/v_ar_dim.htm#array-dimension-limit array-dimension-limit
是:
一个正的固定数,其确切大小取决于实现,但不小于 1024。
实际上,SBCL 报告
* array-dimension-limit
4611686018427387901
所以这并不是一个真正的限制。
推荐阅读
- ios - iOS Mapkit - dequeueReusableAnnotationView 与 Interface Builder XIB
- javascript - JavaScript 程序如何知道全局属性名称是否由 ECMA-262 定义?
- caching - “更高级别”的缓存是指 L 之后或更接近 CPU 的更大数量吗?
- angular - 根据对象中的其他值从列表中删除选项?
- javascript - 在组件中将 Vanilla Javascript 转换为 React 应用程序
- c++ - 未在此范围内声明“周长”
- slurm - Slurm 中的“Slurm 错误:QOSMinNode”是什么意思?
- ios - 无法构建 Objective-C 模块“Framework”,找不到伞头“Framework.h”
- reactjs - axios返回数据无法获取
- dolphindb - 如何在 dolphindb 中查看一个巨大的 cvs 文件中的数据?