I've recently done some digging. Due to my lack of Lisp experience, I want to verify what I've found. Is this a correct characterisation of the behaviours of square brackets in Scheme, Racket, Common Lisp, and Clojure?
- R5RS and R7RS Scheme: Square brackets are reserved in the spec "for possible future extensions to the language" (page 6 for R5RS and page 9 for R7RS), but implementations tend to implement square brackets as R6RS Scheme does below. Racket is one such example, even having community conventions for where to prefer square brackets.
- R6RS Scheme: "Matched square brackets can be used synonymously with parentheses". In other words, square brackets are valid brackets as long as they match. Alternative source.
- Common Lisp: Square brackets are reserved so the user can give them meaning via reader macros. They do not have meaning within the standard language, except inside
FORMAT
control strings. - Clojure: Square brackets for vectors and parentheses for lists. These are not the same thing.