tdc2016poa | trilha programacao funcional - por que sua próxima aplicação web deve ser em...
Post on 15-Apr-2017
119 Views
Preview:
TRANSCRIPT
3
QUEM SOU EU?Desenvolvedor & consultor na TW desde 2010
Java, C#, Clojure, JavaScript
EUA, Ecuador, Escócia
4
No TDC Floripa... Convencer pelo menos um de vocês a usar Clojure no próximo projeto
...e que Clojure conquiste o mundo (amanhã à noite)
» lein repl
user=> (foo)ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval1265
» lein repl
user=> (def foo 2)#'user/foo
user=> (foo)ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval1265
user=> foo2
(require '[clojure.test :refer :all])
(deftest sum (is (= 5 (+ 2 3))))
(run-tests)
Testing user
Ran 1 tests containing 1 assertions.0 failures, 0 errors.{:test 1, :pass 1, :fail 0, :error 0, :type :summary}
;apresentador{:nome “Eduardo”}
;outro exemplo de apresentador{:nome “Eduardo Aquiles” :idade 28}
;cotação do dólar[3.49 3.57 3.54]
22
Dados usam estruturas da linguagem e são
explícitos para tornar fácil a argumentação em
cima deles
(defn modulo [valor](if (> 0 valor)
(* -1 valor)valor
))
(deftest test-modulo(is (= 2 (modulo -2)))(is (= 2 (modulo 2))))
{:test 1, :pass 2, :fail 0, :error 0, :type :summary}
35
Sintaxe – bastante simples: listas para todos os lados REPL – experimentação e rápido feedback Testes – não preciso escolher um framework Dados – uso a melhor estrutura de dados que a própria linguagem já
oferece Funções – simplicidade Imutabilidade – menos bugs, mais concorrência JVM – acesso à classes do Java e bibliotecas
37
JVM altamente otimizada, diversas ferramentas para monitoramento,
além de servidores HTTP disponíveis
40
Maioria das vezes estamos movendo dados
de uma lado para o outro – realmente
preciso criar um tipo?
top related