Clojure Reader
Em linguagens tradicionais (como Java ou C), o compilador lê o texto e tenta entender a estrutura gramatical da linguagem de uma vez só. No Clojure, o processo é dividido.
O Reader é o componente que lê o texto bruto (fluxo de caracteres) e o transforma em estruturas de dados nativas da linguagem (listas, vetores, mapas, símbolos).
Imagine que você tem o seguinte código Clojure:
(+ 1 2)
- Entrada (Caracteres): O Reader vê os caracteres
(,+,,1,,2,). - Processamento: Ele reconhece os parênteses como o início e fim de uma lista, o
+como um símbolo e os números como inteiros. - Saída (Estrutura de Dados): O Reader entrega ao compilador uma PersistentList contendo o símbolo
+e os números1e2.
Para o Clojure, antes de ser “código”, o que você escreveu é apenas uma lista de dados (característico de homoiconicidade do Clojure).