Greetings! Robert Boyer <[EMAIL PROTECTED]> writes: > > The problem has always been that we have two array types, static and > > normal, which have the same print/read representation, so it is impossible > > to pass a static array by this method. > > If we are going to have non-ANSI-standard objects around, like static arrays, > we might as well have nonstandard ways to read them in, too. Parodying the > way that AMD and Intel enhance their x86 instruction sets to 64-bits, we > might simply have a new instruction in the READ process that toggles the > (new) default value that :static takes in make-array from t to nil and back. > That way, you don't have to invent or worry about a really new syntax for > these other kinds of arrays. Simply put something like: > > #.(setq si::*make-array-static-by-default* (not > si::*make-array-static-by-default*)) #(1 2 3) >
This is an absolutely fantastic idea! To imlement, though, we would need to take the mods you propose below to make-array and apply to Lsharp_left_parenthesis_reader, as the latter does not call the former. Is this easier and/or cleaner than just defining some #% reader or some such? We already have #!, #u, and #v for special GCL features. Perhaps this is confusing and unfriendly to the user. take care, > into the read stream, after changing > > (defun make-array (dimensions > &key (element-type t) > (initial-element nil) > (initial-contents nil initial-contents-supplied-p) > adjustable fill-pointer > displaced-to (displaced-index-offset 0) > => (static si::*make-arrays-static-by-default*))) > > and adding > > (defvar si::*make-arrays-static-by-default* nil) > > Bob > > P. S. Or even > > #.(let ((si::*make-array-static-by-default* t)) > #(1 2 3)) > > > > > -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gcl-devel
