我可以使用 append!在文字列表上?

Can I use append! on literal lists?

根据我的理解,在文字列表中使用 set-car!set-cdr! 是无效的。

(define nums '(1 2 3))
(set-car! nums 10)  ; Invalid.

考虑到这一点,我可以使用文字列表作为 SRFI 1 的 append! 过程的参数吗?我之所以这样问,是因为 append! 的实现可能会在除了给 append! 的最后一个参数之外的所有参数上使用 set-cdr!。如果 set-cdr! 在文字列表上无效,那么在文字列表上使用 append! 也是如此。我的想法对吗?

append! 的最后一个参数使用文字列表怎么样?

案例:

文字常量,例如 '(1 2 3) 不可变的 ,这意味着您不能修改它们的任何部分。 description for append! in srfi/1 表示

[...] it is allowed, but not required, to alter cons cells in the argument lists to construct the result list. The last argument is never altered; the result list shares structure with this parameter.

因此最后一个参数可能是文字:none 其他参数可能是。

如果系统将列表实现为pure functional data,那么将无法以方便的方式进行变异。因此,此要求不会强加 cons 单元的突变以使纯功能实现有效(反之亦然,此类实现的存在对定义要求有影响)。