Clojure

Cómo compilar y ejecutar un programa en clojure

con cider

Iniciar REPL:

M-x cider-jack-in (desde buffer .clj) O bien C-c M-j

Evaluar código:

C-c C-e - evaluar expresión antes del cursor C-c C-k - evaluar buffer completo C-c C-c - evaluar función actual C-c C-z - cambiar a buffer REPL

Fundamentos de sintaxis Clojure

Estructura de listas y vectores: (función arg1 arg2), [elem1 elem2] Definición de funciones: (defn nombre [parámetros] cuerpo) Condicionales: if, when, cond Operadores básicos y comparación

Recursividad básica

Estructura típica: caso base + llamada recursiva Practicar con factorial, fibonacci, suma de lista Entender stack overflow y cuándo ocurre Diferencia entre recursión simple y de cola

Recursión de cola (tail recursion)

Concepto de recur en Clojure Transformar recursión simple a recursión de cola Usar acumuladores para mantener estado Ejemplos: factorial iterativo, reversa de lista

Manipulación de cadenas

Funciones core: str, subs, count, empty? Conversión: seq para tratar string como lista de caracteres Predicados: char?, string? Biblioteca clojure.string: split, join, replace

Patrones comunes

Procesar carácter por carácter recursivamente Construir strings resultado con acumulador Combinar recursión con manipulación de strings Casos edge: string vacío, un carácter

Ejercicios progresivos

Contar caracteres específicos en string Invertir string recursivamente Palindromo checker Reemplazar caracteres sin usar replace Generar permutaciones de string