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