Major Section: ARRAYS
Example Form: (compress2 'delta1 a)whereGeneral Form: (compress2 name alist)
name
is a symbol and alist
is a 2-dimensional array named
name
. See arrays for details. Logically speaking, this
function removes irrelevant pairs from alist
, possibly shortening
it. The function returns a new array, alist'
, of the same name and
dimension as alist
, that, under aref2
, is everywhere equal to alist
.
That is, (aref2 name alist' i j)
is (aref2 name alist i j)
, for all
legal indices i
and j
. Alist'
may be shorter than alist
and the
non-irrelevant pairs may occur in a different order in alist'
than
in alist
.
Practically speaking, this function plays an important role in the
efficient implementation of aref2
. In addition to creating the new
array, alist'
, compress2
makes that array the ``semantic value'' of
name
and allocates a raw lisp array to name
. For all legal indices,
i
and j
, that raw lisp array contains (aref2 name alist' i j)
in
slot i
,j
. Thus, subsequent aref2
operations can be executed in
virtually constant time provided they are given name
and the alist'
returned by the most recently executed compress2
or aset2
on name
.
See arrays.