diff options
-rw-r--r-- | pt-br/clojure-pt.html.markdown | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/pt-br/clojure-pt.html.markdown b/pt-br/clojure-pt.html.markdown index a2b53726..7e8b3f7b 100644 --- a/pt-br/clojure-pt.html.markdown +++ b/pt-br/clojure-pt.html.markdown @@ -10,7 +10,7 @@ lang: pt-br Clojure é uma linguagem da família do Lisp desenvolvida para a JVM (máquina virtual Java). Possui uma ênfase muito mais forte em [programação funcional] (https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional) pura do que Common Lisp, mas inclui diversas utilidades [STM](https://en.wikipedia.org/wiki/Software_transactional_memory) para lidar com estado a medida que isso se torna necessário. -Essa combinação permite gerenciar processamento concorrente de maneira muito simples e frequentemente de maneira automática. +Essa combinação permite gerenciar processamento concorrente de maneira muito simples, e frequentemente de maneira automática. (Sua versão de clojure precisa ser pelo menos 1.2) @@ -18,10 +18,10 @@ Essa combinação permite gerenciar processamento concorrente de maneira muito s ```clojure ; Comentários começam por ponto e vírgula -; Clojure é escrito em "forms" (padrões), os quais são simplesmente +; Clojure é escrito em "forms", os quais são simplesmente ; listas de coisas dentro de parênteses, separados por espaços em branco. -; O "reader" (leitor) de clojure presume que o primeiro elemento de +; O "reader" (leitor) de Clojure presume que o primeiro elemento de ; uma par de parênteses é uma função ou macro, e que os resto são argumentos. : A primeira chamada de um arquivo deve ser ns, para configurar o namespace (espaço de nomes) @@ -32,20 +32,20 @@ Essa combinação permite gerenciar processamento concorrente de maneira muito s ; str cria uma string concatenando seus argumentos (str "Hello" " " "World") ; => "Hello World" -; Math é direta e intuitiva +; Cálculos são feitos de forma direta e intuitiva (+ 1 1) ; => 2 (- 2 1) ; => 1 (* 1 2) ; => 2 (/ 2 1) ; => 2 -; Igualdade é = +; Você pode comparar igualdade utilizando = (= 1 1) ; => true (= 2 1) ; => false ; Negação para operações lógicas (not true) ; => false -; Aninhar forms (padrões) funciona como esperado +; Aninhar "forms" funciona como esperado (+ 1 (- 3 2)) ; = 1 + (3 - 2) => 2 ; Tipos @@ -131,7 +131,7 @@ Essa combinação permite gerenciar processamento concorrente de maneira muito s ; (É necessário colocar parênteses para chamá-los) ((fn [] "Hello World")) ; => "Hello World" -; Você pode criar variáveis (var) usando def +; Você pode atribuir valores a variáveis utilizando def (def x 1) x ; => 1 @@ -182,8 +182,11 @@ x ; => 1 ; operações se eles ficarem grandes o suficiente, portanto não há necessida de ; se preocupar com isso. -; Maps podem usar qualquer tipo "hasheavel" como chave, mas normalmente -; keywords (palavras chave) são melhores. +;Mapas podem usar qualquer valor que se pode derivar um hash como chave + + +; Mapas podem usar qualquer valor em que se pode derivar um hash como chave, +; mas normalmente palavras-chave (keywords) são melhores. ; Keywords são como strings mas com algumas vantagens. (class :a) ; => clojure.lang.Keyword @@ -199,7 +202,7 @@ keymap ; => {:a 1, :c 3, :b 2} (stringmap "a") ; => 1 (keymap :a) ; => 1 -; Uma palavra chave pode ser usada pra recuperar os valores de um mapa +; Uma palavra-chave pode ser usada pra recuperar os valores de um mapa (:b keymap) ; => 2 ; Não tente isso com strings @@ -213,7 +216,7 @@ keymap ; => {:a 1, :c 3, :b 2} (def newkeymap (assoc keymap :d 4)) newkeymap ; => {:a 1, :b 2, :c 3, :d 4} -; Mas lembre-se, tipos em clojure são sempre imutáveis! +; Mas lembre-se, tipos em Clojure são sempre imutáveis! keymap ; => {:a 1, :b 2, :c 3} ; Use dissoc para remover chaves @@ -228,7 +231,7 @@ keymap ; => {:a 1, :b 2, :c 3} ; Adicione um membro com conj (conj #{1 2 3} 4) ; => #{1 2 3 4} -; Remove um com disj +; Remova um membro com disj (disj #{1 2 3} 1) ; => #{2 3} ; Test por existência usando set como função: @@ -237,19 +240,19 @@ keymap ; => {:a 1, :b 2, :c 3} ; Existem muitas outras funções no namespace clojure.sets -; Forms (padrões) úteis +; Forms úteis ;;;;;;;;;;;;;;;;; -; Construções lógicas em clojure são como macros, e +; Construções lógicas em Clojure são como macros, e ; se parecem com as demais (if false "a" "b") ; => "b" (if false "a") ; => nil -; Use let para criar amarramentos (bindings) temporários +; Use let para criar um novo escopo associando sîmbolos a valores (bindings) (let [a 1 b 2] (> a b)) ; => false -; Agrupe comandos juntos com do +; Agrupe comandos juntos com "do" (do (print "Hello") "World") ; => "World" (prints "Hello") @@ -281,7 +284,7 @@ keymap ; => {:a 1, :b 2, :c 3} ; Use require para importar um módulo (require 'clojure.string) -; USe / para chamar funções de um módulo +; Use / para chamar funções de um módulo ; Aqui, o módulo é clojure.string e a função é blank? (clojure.string/blank? "") ; => true @@ -316,10 +319,10 @@ keymap ; => {:a 1, :b 2, :c 3} ; Use . para chamar métodos. Ou, use o atalho ".method" (. (Date.) getTime) ; <a timestamp> -(.getTime (Date.)) ; exactly the same thing. +(.getTime (Date.)) ; exatamente a mesma coisa. ; Use / para chamar métodos estáticos -(System/currentTimeMillis) ; <a timestamp> (system is always present) +(System/currentTimeMillis) ; <a timestamp> (o módulo System está sempre presente) ; Use doto para pode lidar com classe (mutáveis) de forma mais tolerável (import java.util.Calendar) @@ -330,8 +333,8 @@ keymap ; => {:a 1, :b 2, :c 3} ; STM ;;;;;;;;;;;;;;;;; -; Software Transactional Memory é o mecanismo que clojure usa para gerenciar -; estado persistente. Tem algumas construções em clojure que o utilizam. +; Software Transactional Memory é o mecanismo que Clojure usa para gerenciar +; estado persistente. Tem algumas construções em Clojure que o utilizam. ; O atom é o mais simples. Passe pra ele um valor inicial (def my-atom (atom {})) @@ -339,8 +342,8 @@ keymap ; => {:a 1, :b 2, :c 3} ; Atualize o atom com um swap!. ; swap! pega uma funçnao and chama ela com o valor atual do atom ; como primeiro argumento, e qualquer argumento restante como o segundo -(swap! my-atom assoc :a 1) ; Sets my-atom to the result of (assoc {} :a 1) -(swap! my-atom assoc :b 2) ; Sets my-atom to the result of (assoc {:a 1} :b 2) +(swap! my-atom assoc :a 1) ; Coloca o valor do átomo my-atom como o resultado de (assoc {} :a 1) +(swap! my-atom assoc :b 2) ; Coloca o valor do átomo my-atom como o resultado de (assoc {:a 1} :b 2) ; Use '@' para desreferenciar um atom e acessar seu valor my-atom ;=> Atom<#...> (Retorna o objeto do Atom) |