Linguagem Clojure
Alunos:
Ian Dias de Souza Pierson
Vinícius S. Morais Provazzi
Murilo Sotelo
De onde veio Clojure?
Rick Hickey, o criador da Linguagem Clojure queria uma linguagem de programação que fosse: ●
Uma lisp;
●
Para programação Funcional;
●
Simbiotica com uma plataforma já estabelecida;
●
Voltada para Programação Concorrente.
O que é Clojure?
Algumas características da Linguagem:
●
Linguagem funcional;
●
Propósito Geral;
●
Roda na Java Virtual Machine (compilada diretamente para JVM bytecode);
●
Linguagem Dinâmica;
O que é Clojure?
●
É um dialeto de Lisp (notações prefixo, muitos parênteses!); ●
Suporte para programação Concorrente(MultiThreads);
●
Estruturas de dados imutáveis e persistentes;
Programação Funcional
É um paradigma de programação que apresenta o conceito de funções de primeira classe sem efeitos colaterais:
●
Funções podem receber outras funções como parâmetros e retornar funções como resultados;
●
Evita estados mutáveis (Funções não alteram o estado do programa).
Desenvolvimento Dinâmico
O que significa dizer que Clojure é uma linguagem dinâmica?
●
Interface de programação
REPL( Read-Eval-Print-Loop);
●
Compilação Dinâmica.
primária
é
a
Clojure tem inteiros de precisão arbitrária, strings, doubles, characters, simbolos e palavras chave:
(* 2 4)
-> 8
"string"
-> "string"
3.14159
-> 3.14159
'symbol
-> symbol
Clojure Funcional
O comando fn cria um objeto função. Ele tem valor como qualquer outro, é possivel guarda-lo em uma variavel, passa-lo para funções, etc.
(def hello (fn [] "Hello world"))
-> #'user/hello
(hello)
-> "Hello world"
Clojure Funcional defn é uma macro que facilita a definição de funções: (defn argcount
([] 0)
([x] 1)
([x y] 2)
([x y & more] (+ (argcount x y) (count more))))
-> #'user/argcount
(argcount)
-> 0
(argcount 1)
-> 1
(argcount 1 2)
-> 2
(argcount 1 2 3 4