Обращение к элементам массивов можно сделать более привычным с помощью
макроса чтения.
Вместо
(aref a i1 ...)
можно будет писать
[a i1 ...]
;; eval-when - для компилятора, чтобы
;; употреблять [] ниже в том же файле
(eval-when (:compile-toplevel :load-toplevel :execute)
(defun open-bracket-reader (stream char)
(declare (ignore char))
(cons 'aref (read-delimited-list #\] stream t)))
(set-macro-character #\[ #'open-bracket-reader)
(set-macro-character #\] (get-macro-character #\))) )
[sa 0 1] 1.1 (setf [sa 0 1] 2.2) 2.2 (dotimes (i 2 sa) (setf [sa 0 i] (+ [sa 0 i] [sa 1 (1+ i)]))) #2A((2.2 3.3 1.1) (1.1 1.1 1.1))