Noam Postavsky <
address@hidden> schrieb am Fr., 7. Apr. 2017 um 23:03 Uhr:
On Fri, Apr 7, 2017 at 4:49 PM, Drew Adams <address@hidden> wrote:
>
> I don't understand the backward-compatibility argument.
> A record type has not existed before. When/where do we
> already have `aref'/`copy-sequence' being applied to
> something other than a sequence/array?
Up until the recent changes, the things produced by cl-defstruct
make-foo functions were vectors with the first element being the
symbol 'cl-struct-foo'. So they could be indexed with aref and copied
with copy-sequence. Now they are "record" objects, but we don't want
to break code that uses aref and copy-sequence on them.
While the manual mentions that vectors or lists are used, it doesn't say that the sequence functions can simply be used. Rather, the implementation as sequence is an implementation detail that users shouldn't rely on. cl-defstruct even creates a copy-FOO function to copy structures, which should be used instead of copy-sequence. Therefore, I think it's fine to not allow copy-sequence and aref on structure types any more, if this change is properly documented.