Usando funções existentes no Clojure
Bom, aqui estou eu tentando manter uma meta pessoal e tentando ajudar quem esta iniciando nesse mundo Clojure.
Até aqui, fizemos o teste mais famoso do MUNDO chamado Hello World. Depois vimos como criar funções em Clojure, no final do artigo vou deixar o link dos dois posts para quem não viu ainda poder seguir desde o inicio.
Vamos as funções existentes em Clojure que podemos usar no nosso dia-dia. Nesse exemplo vou mostrar map
, reduce
, filter
e inc
.
Map, filter, reduce e inc em Clojure
map
utilizando essa função você consegue por exemplo varrer uma lista e fazer alguma ação com cada item da lista;reduce
com essa função você consegue fazer por exemplo a soma de todos os elementos de uma lista;filter
essa função consegue varrer uma lista e encontrar itens de acordo a um determinado filtro.inc
incrementa cada em itens, iremos ver exemplo dessa função junto commap
.
Bom, acho que podemos iniciar nossos exemplos.
user=> (map inc [1 2 3 4 5 6])
(2 3 4 5 6 7)
user=>
No exemplo acima usando map
podemos ver que cada item da lista é incrementado (+1) a lista que tinha [1 2 3 4 5 6]
passou a ter [2 3 4 5 6 7]
.
Agora vou mostrar como funciona a função reduce
. Vamos utilizar a mesma lista [1 2 3 4 5 6]
e tentar fazer a soma de todos os elementos.
user=> (reduce + [1 2 3 4 5 6])
21
user=>
Agora vamos usar o filter
, vou filtrar numeros pares da lista [1 2 3 4 5 6 7 8 9 10]
:
user=> (filter even? [1 2 3 4 5 6 7 8 9 10])
(2 4 6 8 10)
user=>
Para concluir esse artigo, vou mostrar como utilizar algumas dessas funções em uma função que criamos.
user=> (defn pares [& args]
#_=> (filter even? args))
#’user/pares
user=>user=> (pares 1 2 3 4 5 6 7 8 9 10)
(2 4 6 8 10)
user=>
Como já tinhamos visto no artigo anterior, definimos a função pares
e dentro dela utilizamos a função existente no clojure filter
.
Bom, acredito que por enquanto é isso, no próximo artigo irei mostrar um como criar um simples projeto web em clojure e vou evoluindo esse projeto aos poucos.
- Hello World;
- Criar nossas próprias funções;
- Utilizando função existentes do Clojure;
- Criar projeto Clojure;
- Ver como criamos funções e como podemos reutilizar em nosso projetos;
- Criar projeto web;
- Utilizar Classes Java em funções Clojure;
- e mais…
Exemplo no repositório github.
Abraços!