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