Skip to content

Instantly share code, notes, and snippets.

@nihilismus
Last active December 18, 2015 07:29
Show Gist options
  • Save nihilismus/5746735 to your computer and use it in GitHub Desktop.
Save nihilismus/5746735 to your computer and use it in GitHub Desktop.
Clojure 101

1 - Instalación de Leiningen

  1. Descarga el archivo lein en alguno de los directorios de tu $PATH y asigna permisos de ejecución al mismo, en mi caso será ~/.local/bin:
antonio@slackware:~$ wget \
    https://raw.github.com/technomancy/leiningen/stable/bin/lein -O ~/.local/bin/lein
antonio@slackware:~$ chmod +x ~/.local/bin/lein
antonio@slackware:~$ 

1.1. Descarga el archivo [drip][] de igual forma:

antonio@slackware:~$ wget \
    https://raw.github.com/flatland/drip/master/bin/drip -O ~/.local/bin/drip
antonio@slackware:~$ chmod +x ~/.local/bin/drip
  1. Ejecuta el comando lein:
antonio@slackware:~$ lein
Downloading Leiningen to ~/.lein/self-installs/leiningen-2.3.1-standalone.jar now...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
...
Leiningen is a tool for working with Clojure projects.
...
See also: readme, faq, tutorial,...
antonio@slackware:~$ 

Espera a que termine la descarga del archivo leiningen-2.3.1-standalone.jar.

  1. Accede al REPL de Clojure:
antonio@slackware:~$ lein repl
nREPL server started on port 45408
REPL-y 0.2.0
Clojure 1.5.1
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
user=>
  1. Como prueba, ante el prompt user=> ejecuta lo siguiente:
user=> (println "Hola mundo")
Hola mundo
nil
user=> (+ 5 3)
8
user=>
  1. Para salir del REPL mantén apretadas las teclas Control y D o bien ejecuta (exit) o (quit):
user=> (exit)
Bye for now!
antonio@slackware:~$ 

2 - Datos primitivos y colecciones

Datos primitivos o atómicos

  • Números enteros: 23, -390, 43423423, -99548438232.
  • Números flotantes: 0.83, -0.0102, 3294834.23498234923, -43234234.000000230203.
  • Números racionales: 1/2, 12/6, -1000/50, 10/3.
  • Cadenas de caracteres: "foo", "bar", "Hola mundo @_@!", "A".
  • Caracteres: \@, \A, \#, \(, \}.
  • Símbolos: año, edad, nombre-completo.
  • Palabras claves (keywords): :A, :edad, :nombre-completo.
  • Booleanos: true, false, nil (NULL en Java).
  • Expresiones regulares: #"^a.*o$", concuerda con alumno, por ejemplo.

Colecciones o estructuras de datos

(10 20 30 40 50)
("hola" "mundo" "!")
((10 20 30) (40) (50 60 70) (80 90))
  • Vectores: similares a los arreglos (Java) con acceso mediante indices que crecen al final.
[10 20 30 40 50]
["hola" "mundo" "!"]
[:a :b :c :d]
[[:a 30] [:b 40]]
{:a 10 :b 20 :c 30 :d 40 :e 50}
{10 500 20 1000 30 1500 40 2000}
#{uno dos tres cuatro cinco}
#{:a :b :c :d :e}
#{50 -40 30 -20 10}

Todas las anteriores colecciones o estructuras de datos pueden estar anidadas; listas dentro de listas, vectores en listas, conjuntos en vectores, mapas en conjuntos, etc. Es decir, crear estructuras de datos más complejas.

3 - Practicas

Aritmética

user=> (+ 10 20 30)
60
user=> (+ -10 -20 -30)
-60
user=> (+ 10 -20 30)
20
user=> (+ 10 (+ 20 30) 40)
100
user=> (+ -10 (+ 20 30) -40)
0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment