Clojure:
Trabalhando com CSV

Como fazer:

Lendo um arquivo CSV

Clojure não tem análise de CSV embutida em sua biblioteca padrão, mas você pode usar a biblioteca clojure.data.csv para esse propósito. Primeiro, adicione a biblioteca às dependências do seu projeto.

No seu project.clj, adicione a seguinte dependência:

[clojure.data.csv "1.0.0"]

Para ler um arquivo CSV e imprimir cada linha:

(require '[clojure.data.csv :as csv]
         '[clojure.java.io :as io])

(with-open [reader (io/reader "caminho/para/seuarquivo.csv")]
  (doall
   (map println (csv/read-csv reader))))

Isso irá exibir cada linha do CSV como um vetor Clojure.

Escrevendo em um arquivo CSV

Para escrever dados em um arquivo CSV, você pode usar a mesma biblioteca clojure.data.csv:

(require '[clojure.data.csv :as csv]
         '[clojure.java.io :as io])

(let [data [["id" "nome" "idade"]
            ["1" "John Doe" "28"]
            ["2" "Jane Doe" "31"]]]
  (with-open [writer (io/writer "caminho/para/arquivosaida.csv")]
    (csv/write-csv writer data)))

Isso cria ou sobrescreve arquivosaida.csv, preenchendo-o com os dados especificados.

Usando uma Biblioteca de Terceiros: clojure.data.csv

Embora clojure.data.csv seja, sem dúvida, a biblioteca mais direta para o manuseio de CSV em Clojure, para tarefas mais complexas, como lidar com CSVs com caracteres especiais ou delimitadores não convencionais, você pode explorar opções adicionais dentro do ecossistema ou até mesmo considerar a interoperabilidade com Java com bibliotecas como Apache Commons CSV. No entanto, para a maioria das tarefas de processamento de CSV padrão em Clojure, clojure.data.csv fornece um conjunto de ferramentas simples e eficaz.