since the standard reader macro for arrays only creates simple arrays,
you would need to call ADJUST-ARRAY afterwards to set further options, or
create a specialized reader macro or even use #. and write out a call to
MAKE-ARRAY with the :INITIAL-CONTENTS keyword to include the contents.
#:Erik
--
(defun pringles (chips)
(loop (pop chips)))
> when reading from the file, the fill-pointer gets lost:
> [...]
> how can i fix this?
by not using read/print, which are not required to preserve the fill pointer.
ADJUST-ARRAY is specified to signal an error if one attempts to add a
fill-pointer to an array that doesn't have one. sorry.
| 2nd: how would one create a reader macro?
see SET-MACRO-CHARACTER and SET-DISPATCH-MACRO-CHARACTER.
no.
| (defun |#(-reader| (stream subchar arg)
| (declare (ignore subchar arg))
| (make-array :adjustable T
| :fill-pointer T
| :initial-contents (read stream t nil t)))
try READ-DELIMITED-LIST, instead of READ.
| second, the arguments to make-array are wrong.
yes, you would need to read the list first, then use its length as the
dimension.
| i believe this are ignorant questions, but having never ever thought
| about modifying the reader, i have to ask for more help.
I think you should hold back on modifying the reader. it's not a good
_first_ thing to try.