Квадратные скобки []

Обращение к элементам массивов можно сделать более привычным с помощью макроса чтения. Вместо
  (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))