Fundamentos del lenguaje
27 pasos en 9 series de Clojure.
Clojure es el Lisp que se instaló en la industria: corre sobre la JVM, llama directo a cualquier biblioteca de Java y rehízo la idea de Lisp alrededor de estructuras de datos inmutables — vectores, mapas y conjuntos que escribes como literales y transformas en vez de mutar. La mayoría de los programas son pipelines: los datos fluyen por map, filter y reduce, encadenados de izquierda a derecha con las macros -> y ->>.
Este tour cubre el núcleo de trabajo: def y let, los literales de colección y sus herramientas, defn con desestructuración, el juego con nil (nil punning) y la regla de que todo cuenta como verdadero salvo nil y false, la biblioteca de secuencias de map a frequencies, y el mínimo de estado — un átomo, un record — para modelar el cambio. El bis entrega programas completos. Cada fragmento se verifica leyendo el archivo entero; con la verificación de ejecución activada, cada uno carga y cada script corre de principio a fin.
Valores y vinculaciones
- def y nombresNombra el inventario de un puesto de mercado con
defy deriva un valor de los otros. - Locales con letConvierte medidas de una poza de marea dentro de un
let, y el nombre revinculado vuelve después. - Keywords y símbolosLee la pista de un mixtape desde un mapa con keywords y la contrasta con un símbolo citado.
Colecciones
- Operaciones con vectoresArma una ruta de ferry como vector y la lee por índice, por conteo y por rebanada.
- Búsqueda en mapasLleva la cuenta de plántulas en un mapa y luego agrega, quita y fusiona claves.
- Conjuntos y pertenenciaCompara dos listas de avistamiento de aves con literales de conjunto y
clojure.set.
Funciones
- Fundamentos de defnDefine el porcentaje de hidratación de un panadero con docstring y una auxiliar privada.
- Funciones anónimasPasa funciones sin nombre a
mapyfiltersobre una semana de lluvia medida. - Aridades múltiplesUna función de riego con aridad por defecto, más un armador de rótulos variádico.
Flujo y qué cuenta como verdadero
- if, when y condLecturas de un mareógrafo encaminadas por
if,whenycond. - Qué cuenta como verdadero y nilSolo
nilyfalsecuentan como falso;oryandlo vuelven valores por defecto. - case y condpLos colores de las líneas del metro salen de
casesobre literales; el gentío, decondp.
Secuencias
- map y filterConteos de aves avistadas pasados por
map,filterymapv. - reduce y foldsPedidos de pan de una panadería plegados con
reduce, incluso hacia un mapa. - Macros de encadenamientoUn pipeline de elevaciones escrito anidado, luego con
->>, y->sobre un mapa.
Herramientas de seq
- frequencies y group-byConteo de palabras con
frequenciesy paradas de metro agrupadas porgroup-by. - sort-by y intoUna caja de discos ordenada por año y por reproducciones, y luego vertida con
into. - comp y partialLecturas de una estación meteorológica convertidas por funciones de
compypartial.
Desestructuración
- Desestructuración de vectoresSepara por posición los puntos de una ruta y un par de coordenadas dentro de
let. - Desestructuración de mapasLee un mapa de pedido por clave y aplica la misma forma a un parámetro con valor por defecto.
- Varargs y mapas de opcionesSuma cualquier cantidad de argumentos, expande un vector en ellos y rellena un rótulo con opciones.
Estado y records
- Átomos y swap!Lleva en átomos el conteo de visitas y el registro de recepción, y actualiza los dos con funciones comunes.
- Actualizar mapas anidadosLee y reescribe un inventario de herramientas de dos niveles por rutas de claves, sin anidar a mano.
- Protocolos y recordsDeclara una operación de cobro como protocolo y dos tipos de record la responden distinto.
Bis
- word_freq.cljCuenta palabras de un pasaje breve sobre un puerto e imprime las ocho más frecuentes con su porcentaje.
- grade_report.cljPromedia tres notas por estudiante, asigna una letra de calificación y cierra con un resumen del curso.
- temp_stats.cljInforma una semana de máximas con una barra a escala por día y la distancia de cada día a la media.