Tenho visto muitas pessoas falando de benefícios da Programação Funcional, pensar de forma diferente a Orientação a Objetos, tratar dados como dados de fato e não converter isso para objetos e depois ter a necessidade de converter para dados novamente.
Mesmo trabalhando com Python e já ter trabalhado com Java, resolvi fazer alguns Hello Worlds aqui e compartilhar com quem esta pensando em iniciar com programação funcional, assim como eu.
Não existem muitos artigos em português sobre o assunto, eu até pretendo reescrever em ingles pois assim vejo Clojure e treino inglês também, mas pretendo deixar todos os artigos nas duas línguas.
Pois bem, vamos iniciar…
Instalando o interpretador de Clojure
Para usar Clojure no seu computador, é necessário ter Java pois todo código Clojure é executado na JVM.
A instalação pode ser vista através do seguinte link para Windows, Mac e Linux:
Instalação do Leiningen.
OBS: Se for mac é só utilizar brew install leiningen
A linguagem Clojure foi pensada como Lisp, então devemos pensar em um conceito de funções e não orientação a objetos. A sintaxe no inicio parece estranha, mas no fim das contas quando começar a utilizar você vai se acostumar e acreditar que faz sentido.
Vamos iniciar com o básico, o chamado Hello World e depois vou demostrar um pouco mais de funções e como é a estrutura de Clojure.
Um hello world em Clojure
Bom, para interagir com Clojure, podemos usar o comando lein repl e você conseguirá fazer códigos Clojure no terminal, da mesma forma que Python, Ruby utilizando terminais para testar códigos:
Last login: Sat Jul 8 13:59:24 on console
➜ ~ lein repl
nREPL server started on port 50364 on host 127.0.0.1 — nrepl://127.0.0.1:50364
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_121-b13
Docs: (doc function-name-here)
(find-doc “part-of-name-here”)
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *euser=>
A partir desse user=> podemos codificar e vamos iniciar com Hello World.
Bom, como falei acima, temos que pensar em funções e não em orientação a objetos e tudo mais, então vamos chamar a função println:
user=> (println “Hello World”)
Hello World
nil
user=>
Como vemos acima utilizamos println e passamos como parâmetro o texto a ser impresso no terminal. Na linha abaixo temos o print da String que utilizamos no parâmetro, e após isso o retorno nil pois a função não retorna nada.
Basicamente iniciamos com um parênteses, após isso a função que vamos utilizar, e por fim o parâmetro. Como estamos usando funções, podemos passar N parâmetros, por exemplo, vou passar 3 parâmetros para essa função e veremos o resultado:
user=> (println “Hello” “World” “Gilmar”)
Hello World Gilmar
nil
user=>
Bom, acho que já da para instalar Clojure, entender o básico da Sintaxe e tentar um Hello World.