CLJ
@konr
Que?
Dialecto de Lisp
(Com o que se pode sperar)
Roda na JVM
Focado em concorrencia
=
Simples
Poderoso
Practico
Title Text
Simples
Que é Lisp?
Familia de linguagens
Clojure
Common Lisp
Scheme
Emacs
Expressões Symbolicas
O que é uma expressão symbolica?
Definição
Atomo
(s . s) onde
s
é uma expressão symbolica
Exemplos
42
"jacu pêssego"
(* 2 (+ 3 4))
(defun foo (z) (let ((x 3)(y 4)) (+ x y z)))
(* 2 (* + 3 4))
Consequencia
Dados, que são codigo, que são dados
Qual é a cara
Clojure: https://github.com/LauJensen/clojureql
Emacs Lisp: https://github.com/clojure-emacs
Scheme: https://github.com/sebhtml/scheme-asteroid
Poderoso
Dados, que são codigo, que são dados
Facil de leer
Facil de alterar
Facil de gerar
Macros
with-out-str
with-open
->
time
memoize
Ferramentas de texto
https://github.com/jonase/kibit
Practico
Não é pra ser uma curiosidade
"Um Java melhor, não o Ruby do momento"
Modernizado
Symbiose com plataformas que funccionam
Resolver o problema do momento
Modernizado
(first, next) vs car, cdr, cadadar
(let [x 3]) vs (let ((x 3)))
{:foo :bar :baz :bak} vs ((:foo :bar) (:baz :bak))
Integração com a JVM
Java no Clojure
Scala no Clojure
... no Clojure
https://github.com/gorillalabs/sparkling
Também é possível gerar JARs e WARs normalmente
Compila pra Javascript
Clojurescript
Interacção optima com o Javascript
Closure
Compartilhar funcções e typos
Muito mais succincta
https://github.com/Day8/re-frame
Compila pra Javascript
Clojurescript
Interacção optima com o Javascript
Closure
Compartilhar funcções e typos
Muito mais succincta
https://github.com/Day8/re-frame
Immutabilidade
Programmação funccional
vs manipular stado (inc (inc i))
Manipular stado compartilhado
Evitar problemas
Bons padrões
:)
Made with Slides.com