我可以使用 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!
的最后一个参数使用文字列表怎么样?
案例:
(append! (list 1) '(2 3))
— 这有效吗?
(append! '(1) (list 2 3))
— 这有效吗?
文字常量,例如 '(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 单元的突变以使纯功能实现有效(反之亦然,此类实现的存在对定义要求有影响)。
根据我的理解,在文字列表中使用 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!
的最后一个参数使用文字列表怎么样?
案例:
(append! (list 1) '(2 3))
— 这有效吗?(append! '(1) (list 2 3))
— 这有效吗?
文字常量,例如 '(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 单元的突变以使纯功能实现有效(反之亦然,此类实现的存在对定义要求有影响)。