Você está na página 1de 18

Clojure

Gabriel Cardoso de Faria


Leonardo Cherobim Dutra

Introduo

O que Clojure?

Clojure uma linguagem de programao


de propsito geral com nfase em
programao funcional.

Introduo

Executada na JVM

Sua execuo se d na maquina virtual java


(JVM) por padro, mas existem modos
alternativos de execuo da linguagem.

Introduo

Rich Hickey

o criador da linguagem. Atualmente se


limita a superviso da comunidade de
desenvolvimento do Clojure.

Introduo

Usos atuais do Clojure

Clojure utilizada na industria por


inmeras empresas grandes, como Wallmart e
Puppet Labs, entre outras do setor da
computao.

Histrico

Clojure uma linguagem recente

Com a verso beta lanada em 2007 e a


primeira verso estvel lanada em 2009 (1.0),
poucas grandes mudanas foram feitas na
linguagem, o que pode ser observado pela
verso atual ser a 1.8.

Histrico

10/2007: Lanada a primeira verso beta;


05/2009: Lanada a primeira verso estvel
(1.0);
12/2009: Adicionadas funes de Futures (1.1);
08/2010: Protocolos adicionados (1.2);
09/2011: Suporte melhorados a primitivos (1.3);

Histrico

04/2012: Adicionados Leitores literais(1.4);


03/2013: Redutores adicionados (1.5);
03/2014: Api Java e algoritmos de hash
melhorados (1.6);
06/2015: Transdutores e leitores condicionais
(1.7);
01/2016: Funes Strings, link diretos e
servidor de socket adicionados (1.8).

Caractersticas

Linguagem hospedeira

executada por padro na JVM, mas pode


ser compilada tambm para outros ambientes
de execuo, como o .NET e JavaScript.

Caractersticas

Dialeto da linguagem LISP

Clojure um Lisp-1 e no se destina a ser


um cdigo compatvel com outros dialetos da
linguagem Lisp, uma vez que utiliza o seu
prprio conjunto de estruturas de dados no
compatveis com outros Lisps.

Caractersticas

Linguagem funcional

Clojure usa funes de primeira classe


sem efeitos colaterais, evita o estado mutvel e
enfatiza a iterao recursiva.

Caractersticas

Programao concorrente

Todas as bibliotecas disponveis em Java


para manipulao de threads podem ser
utilizadas em Clojure. Alm dessas a
linguagem dene algumas construes que
abstraem a criao e o gerenciamento explicito
de threads.

Principais comandos

def
Usado para denio de variveis. Ex.:
(def n 5) dene a varivel n com o valor 5

defn
Usado para denio de funes. Ex.:
(defn media [x y] (/ (+ x y) 2))

Principais comandos

if
Estrutura de condio. Ex.:
(if (= denominador 0)
expresso
Denominador invlido se verdadeira
(/ 1 denominador))
se falsa

Principais comandos

loop e recur
Estrutura de repetio. Ex.:
(def fatorial
(fn [n]
(loop [cnt n acc 1]
(if (= cnt 1)
acc
(recur (dec cnt) (* acc cnt))))))

Exemplos de programas

(def somatorio
(fn [lista]
(loop [ns lista acc 0]
(if (empty? ns)
acc
(recur (rest ns) (+ acc (rst ns)))))))

Exemplos de programas

(def bonacci
(fn [n]
(loop [num n acc [1 0] ]
(if (= num 2)
acc
(recur (dec num)
(concat (+ (rst acc)
(rst (rest acc))) acc))))))

Exemplos de programas
https://clojure.org/index
http://dev.clojure.org/display/community/Home
https://en.wikipedia.org/wiki/Clojure
http://www.braveclojure.com/introduction/
https://mauricioszabo.wordpress.
com/2016/04/19/clojure-gentilmente/
http://clojure.org/reference/

Você também pode gostar