You're already getting into undefined behavior territory as indicated by the warning - MY-STRING can not be both a DEFTYPE and a pseudonym for the class named STRING. It's possibly a defect in the system internals that the FIND-CLASS operation didn't totally eradicate the DEFTYPE; or not - nothing is really spelled out here. Either that, or the FIND-CLASS should *not* do what it's doing, which is trying to copy the "system internal" translation of a build-in-class.
The reason this kind of works on other Lisps and not on SBCL is that SBCL has an extensible sequence protocol, so after the FIND-CLASS, it really wants MY-STRING to be using the extended sequence protocol, and not just a random class.
Additionally I also suspect that things are not generally expected to work with (SETF (FIND-CLASS SYM) NEW) where NEW is _any_ built-in-class whatsoever, STRING just being one example.
Well, a few things:
You're already getting into undefined behavior territory as indicated by the warning - MY-STRING can not be both a DEFTYPE and a pseudonym for the class named STRING. It's possibly a defect in the system internals that the FIND-CLASS operation didn't totally eradicate the DEFTYPE; or not - nothing is really spelled out here. Either that, or the FIND-CLASS should *not* do what it's doing, which is trying to copy the "system internal" translation of a build-in-class.
The reason this kind of works on other Lisps and not on SBCL is that SBCL has an extensible sequence protocol, so after the FIND-CLASS, it really wants MY-STRING to be using the extended sequence protocol, and not just a random class.
Additionally I also suspect that things are not generally expected to work with (SETF (FIND-CLASS SYM) NEW) where NEW is _any_ built-in-class whatsoever, STRING just being one example.