Limit document to 80 columns, where possible

This commit is contained in:
Antonio Hernández Blas 2020-02-05 13:41:55 -06:00
parent cfe737647c
commit 43cb521310
No known key found for this signature in database
GPG Key ID: 6EB1BAC2871D97B1

View File

@ -10,8 +10,10 @@ lang: es-es
--- ---
Clojure es un lenguaje de la familia Lisp desarrollado sobre la Máquina Virtual Clojure es un lenguaje de la familia Lisp desarrollado sobre la Máquina Virtual
de Java. Tiene un énfasis mayor en la [programación funcional](https://es.wikipedia.org/wiki/Programación_funcional) pura de Java. Tiene un énfasis mayor en la
que Common Lisp, pero incluyendo la posibilidad de usar [SMT](https://es.wikipedia.org/wiki/Memoria_transacional) para manipular [programación funcional](https://es.wikipedia.org/wiki/Programación_funcional)
pura que Common Lisp, pero incluyendo la posibilidad de usar
[SMT](https://es.wikipedia.org/wiki/Memoria_transacional) para manipular
el estado según se presente. el estado según se presente.
Esta combinación le permite gestionar la concurrencia de manera muy sencilla Esta combinación le permite gestionar la concurrencia de manera muy sencilla
@ -19,7 +21,6 @@ y a menudo automáticamente.
(Necesitas la versión de Clojure 1.2 o posterior) (Necesitas la versión de Clojure 1.2 o posterior)
```clojure ```clojure
; Los comentatios comienzan con punto y coma. ; Los comentatios comienzan con punto y coma.
@ -29,8 +30,8 @@ y a menudo automáticamente.
; El "reader" (lector) de Clojure asume que el primer objeto es una ; El "reader" (lector) de Clojure asume que el primer objeto es una
; función o una macro que se va a llamar, y que el resto son argumentos. ; función o una macro que se va a llamar, y que el resto son argumentos.
; El primer form en un archivo debe ser ns, para establecer el namespace (espacio de ; El primer form en un archivo debe ser ns, para establecer el namespace
; nombres) ; (espacio de nombres)
(ns learnclojure) (ns learnclojure)
; Algunos ejemplos básicos: ; Algunos ejemplos básicos:
@ -78,9 +79,9 @@ y a menudo automáticamente.
; Colecciones & Secuencias ; Colecciones & Secuencias
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;
; Las Listas están basadas en las listas enlazadas, mientras que los Vectores en ; Las Listas están basadas en las listas enlazadas, mientras que los Vectores
; arrays. ; en arrays.
; ¡Los Vectores y las Listas también son clases de Java! ; Los Vectores y las Listas también son clases de Java!
(class [1 2 3]); => clojure.lang.PersistentVector (class [1 2 3]); => clojure.lang.PersistentVector
(class '(1 2 3)); => clojure.lang.PersistentList (class '(1 2 3)); => clojure.lang.PersistentList
@ -168,7 +169,8 @@ x ; => 1
(hello3 "Jake") ; => "Hello Jake" (hello3 "Jake") ; => "Hello Jake"
(hello3) ; => "Hello World" (hello3) ; => "Hello World"
; Las funciones pueden usar argumentos extras dentro de un seq utilizable en la función ; Las funciones pueden usar argumentos extras dentro de un seq utilizable en
; la función
(defn count-args [& args] (defn count-args [& args]
(str "You passed " (count args) " args: " args)) (str "You passed " (count args) " args: " args))
(count-args 1 2 3) ; => "You passed 3 args: (1 2 3)" (count-args 1 2 3) ; => "You passed 3 args: (1 2 3)"
@ -183,8 +185,8 @@ x ; => 1
; Mapas ; Mapas
;;;;;;;;;; ;;;;;;;;;;
; Mapas de Hash y mapas de arrays comparten una misma interfaz. Los mapas de Hash ; Mapas de Hash y mapas de arrays comparten una misma interfaz. Los mapas de
; tienen búsquedas más rápidas pero no mantienen el orden de las claves. ; Hash tienen búsquedas más rápidas pero no mantienen el orden de las claves.
(class {:a 1 :b 2 :c 3}) ; => clojure.lang.PersistentArrayMap (class {:a 1 :b 2 :c 3}) ; => clojure.lang.PersistentArrayMap
(class (hash-map :a 1 :b 2 :c 3)) ; => clojure.lang.PersistentHashMap (class (hash-map :a 1 :b 2 :c 3)) ; => clojure.lang.PersistentHashMap
@ -193,7 +195,8 @@ x ; => 1
; Los mapas pueden usar cualquier tipo para sus claves, pero generalmente las ; Los mapas pueden usar cualquier tipo para sus claves, pero generalmente las
; keywords (palabras clave) son lo habitual. ; keywords (palabras clave) son lo habitual.
; Las keywords son parecidas a cadenas de caracteres con algunas ventajas de eficiencia ; Las keywords son parecidas a cadenas de caracteres con algunas ventajas de
; eficiencia
(class :a) ; => clojure.lang.Keyword (class :a) ; => clojure.lang.Keyword
(def stringmap {"a" 1, "b" 2, "c" 3}) (def stringmap {"a" 1, "b" 2, "c" 3})
@ -250,8 +253,8 @@ keymap ; => {:a 1, :b 2, :c 3}
; Patrones útiles ; Patrones útiles
;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
; Las construcciones lógicas en clojure son macros, y presentan el mismo aspecto ; Las construcciones lógicas en clojure son macros, y presentan el mismo
; que el resto de forms. ; aspecto que el resto de forms.
(if false "a" "b") ; => "b" (if false "a" "b") ; => "b"
(if false "a") ; => nil (if false "a") ; => nil
@ -352,8 +355,10 @@ keymap ; => {:a 1, :b 2, :c 3}
; Actualiza un atom con swap! ; Actualiza un atom con swap!
; swap! toma una función y la llama con el valor actual del atom ; swap! toma una función y la llama con el valor actual del atom
; como su primer argumento, y cualquier argumento restante como el segundo ; como su primer argumento, y cualquier argumento restante como el segundo
(swap! my-atom assoc :a 1) ; Establece my-atom al resultado de (assoc {} :a 1) (swap! my-atom assoc :a 1) ; Establece my-atom al resultado
(swap! my-atom assoc :b 2) ; Establece my-atom al resultado de (assoc {:a 1} :b 2) ; de (assoc {} :a 1)
(swap! my-atom assoc :b 2) ; Establece my-atom al resultado
; de (assoc {:a 1} :b 2)
; Usa '@' para no referenciar al atom sino para obtener su valor ; Usa '@' para no referenciar al atom sino para obtener su valor
my-atom ;=> Atom<#...> (Regresa el objeto Atom) my-atom ;=> Atom<#...> (Regresa el objeto Atom)
@ -377,7 +382,8 @@ my-atom ;=> Atom<#...> (Regresa el objeto Atom)
; Agents: http://clojure.org/agents ; Agents: http://clojure.org/agents
### Lectura adicional ### Lectura adicional
Ésto queda lejos de ser exhaustivo, pero espero que sea suficiente para que puedas empezar tu camino. Ésto queda lejos de ser exhaustivo, pero espero que sea suficiente para que
puedas empezar tu camino.
Clojure.org tiene muchos artículos: Clojure.org tiene muchos artículos:
[http://clojure.org/](http://clojure.org/) [http://clojure.org/](http://clojure.org/)