在 Common Lisp 中,符号名称是否有定义的最大长度?

In Common Lisp, is there a defined maximum length for a symbol's name?

我无法在 Hyperspec 或 Common Lisp:语言(第二版)中找到此信息。与实现相关的常量,如 LAMBDA-PARAMETERS-LIMITCALL-ARGUMENT-LIMIT,但不是 SYMBOL-NAME-LENGTH-LIMITPRINTABLE-SYMBOL-NAME-MAX-LENGTH.

最长名称的标准符号是UPDATE-INSTANCE-FOR-DIFFERENT-CLASSUPDATE-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 是:

A positive fixnum, the exact magnitude of which is implementation-dependent, but which is not less than 1024.

实际上,SBCL 报告

* array-dimension-limit
4611686018427387901

所以这并不是真正的限制。