aset/aref for char-tables, range-tables etc.
Ben Wing
ben at xemacs.org
Wed Oct 5 23:13:07 EDT 2005
Hrvoje Niksic wrote:
>Ben Wing <ben at 666.com> writes:
>
>
>
>>i originally decided that it was a bad idea to allow aset/aref to
>>operate over char-tables and range-tables, like FSF does. but now
>>i'm not so sure. for one, i recently added a change to use
>>char-tables in place of 256-element vectors for the return value of
>>`make-display-table', and code in w3 and x-symbol (and probably
>>elsewhere) broke.
>>
>>
>
>I think aset/aref make for array-like objects, that is, random-access
>data structures indexed by integers. If char-tables and range-tables
>use special character properties, other than its code, to "find" the
>value, they are IMHO not good candidates for aset/aref.
>
>make-display-table is a question of backward and possibly of
>cross-Emacs compatibility. There might be good ways to handle that,
>but they seem orthogonal to your primary question.
>
>
>
>>but more to the point, i'm influenced by python, which uses [] for
>>accessing arrays and hash tables ("dictionaries"), including ranges
>>in arrays (the slice notation); and both char-tables and
>>range-tables are basically just sparse arrays, with some
>>optimizations.
>>
>>
>
>Python's [] is much more than array access: it's a syntactic shorthand
>for __getitem__/__setitem__, and it's these generic concepts that we
>lack. If we do introduce them, they should work on all kinds of
>objects (e.g. hash tables and lists), and in that case we should
>choose names better than aref/aset, because those concepts are quite
>detached from traditional meanings of "array".
>
>
>
is there any reason that aset/aref couldn't be extended semantically to
be the equivalent of python's [] (which, after all, was also originally
an "array reference" syntax)? btw hash tables are also "associative
arrays". char tables are indexed by character and nothing else, but can
take a charset or something similar as a shorthand for setting a value
for all chars in the charset. range tables are very similar but you can
set ranges of integers instead of charsets.
More information about the XEmacs-Beta
mailing list