在 Common Lisp 的任何实际实现中,REMOVE是否会返回相同的序列?该规范表明它是允许的:
remove 的结果可能与序列共享;如果不需要删除任何元素,则结果可能与输入序列相同。
例如,SBCL 似乎没有这样做,但我只做了一个粗略的(可能不充分的)测试,我想知道其他实现是做什么的。
CL-USER> (defparameter *str* "bbb") *STR* CL-用户> *str* “bb” CL-USER> (defparameter *str2* (remove #\a *str*)) *STR2* CL-USER> (eq *str* *str2*) 零 CL-用户> *str* “bb” CL-用户> *str2* “bb”