Clojure:
Organizando o código em funções

Como fazer:

Funções em Clojure são definidas com defn, seguido por um nome, parâmetros e corpo. Aqui está um exemplo rápido.

(defn saudar [nome]
  (str "Olá, " nome "!"))

(saudar "Alex") ; => "Olá, Alex!"

Agora digamos que queremos calcular a área de um retângulo. Em vez de juntar tudo de qualquer maneira, separamos em duas funções:

(defn area [comprimento largura]
  (* comprimento largura))

(defn imprimir-area [comprimento largura]
  (println "A área é:" (area comprimento largura)))

(imprimir-area 3 4) ; => A área é: 12

Mergulho Profundo

Há tempos atrás, os programadores simplesmente acumulavam toda a sua lógica em um bloco único. Era feio. Depois, a programação estruturada surgiu e funções se tornaram uma coisa. Em Clojure, toda função é de primeira classe — você pode jogá-las por aí como qualquer outro valor.

Alternativas? Algumas pessoas podem brincar com multimétodos ou funções de ordem superior, mas essas são apenas especiarias no guisado de funções.

Todos os detalhes em função da função: elas são imutáveis em Clojure, tornando confusões de efeitos colaterais menos prováveis. Elas dependem fortemente de recursão em vez de loops típicos, o que se encaixa bem com os paradigmas funcionais da linguagem.

Veja Também