Estou tentando aprender Lisp e olhando para todos os Lisps por aí e suas diferenças.
Vejo que, em algumas implementações do Scheme, você pode usar colchetes de forma intercambiável com colchetes para facilitar a leitura, portanto, como são tratados da mesma forma, presumo que ainda sejam apenas expressões S, como todo o resto.
No entanto, no Clojure, vejo que colchetes e chaves são usados para representar diferentes tipos de dados, como vetores e assim por diante. Essas expressões S ainda são válidas ou devem ser consideradas átomos? Isso não "quebra" todo o conceito de expressões S, tornando Clojure um Lisp "impuro"?
Expressões S são uma representação textual para dados. Números, símbolos, células contras, listas, strings, ... Common Lisp também possui representações textuais para matrizes, vetores, mais tipos de números, caracteres, ... Common Lisp também fornece um leitor extensível pelo usuário, para que o usuário possa adicionar mais representações textuais para tipos de dados. Às vezes, esse mecanismo também é usado para alterar a sintaxe da linguagem de programação Lisp (por exemplo, para suportar expressões ou instruções infix de outras linguagens de programação).
Assim, se um dialeto Lisp oferece representações textuais para tipos de dados adicionais, isso se ajusta bem à idéia de expressões s.
fonte