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
:)
intro to clj
By Konrad Scorciapino
intro to clj
- 689