Cuando Ian Duncan, ingeniero de Mercury, publicó en el blog oficial del lenguaje que su empresa mantiene alrededor de 2 millones de líneas de Haskell en producción, la reacción dentro de la comunidad fue una mezcla de orgullo, escepticismo y ganas de saber más. La cifra suena fuera de escala para un lenguaje que la mayoría de los desarrolladores en LATAM conocen sólo como una curiosidad académica. Sin embargo, esa base de código procesa $248.000 millones en transacciones anuales y sirve a más de 300.000 negocios desde una empresa de cerca de 1.500 empleados.
Hablar de Haskell en producción a esta escala obliga a revisar dos prejuicios comunes: que el lenguaje es demasiado académico para mover dinero real y que un sistema de tipos fuertes no escala cuando entran ingenieros que aprenden el idioma en el trabajo. Mercury demuestra lo contrario, y el artículo de Duncan ofrece lecciones que aplican mucho más allá del nicho funcional. En este post repasamos qué hace Mercury, por qué Haskell sobrevive después de años de hipercrecimiento y qué pueden tomar prestado equipos hispanohablantes que no escriben Haskell pero enfrentan los mismos problemas operativos.
Qué pasó
El 30 de marzo de 2026, el blog oficial de Haskell estrenó una serie titulada Haskellers from the trenches con un artículo de Ian Duncan, líder de plataforma en Mercury. El texto detalla cómo una fintech estadounidense que provee servicios bancarios a startups y pymes opera con una base de código de aproximadamente 2 millones de líneas de Haskell después de quitar comentarios y ruido.
El artículo no se enfoca en lo bonito del lenguaje. Duncan describe la operación: equipos de generalistas que en su mayoría nunca habían escrito Haskell antes de entrar, hipercrecimiento del 2x anual, una crisis de Silicon Valley Bank que les tiró encima $2.000 millones en depósitos en cinco días, exámenes regulatorios y una solicitud activa para obtener una carta bancaria nacional con la OCC en Estados Unidos. La tesis es clara: Haskell se sostiene en producción no porque sea elegante, sino porque permite empacar conocimiento operativo dentro de las APIs y forzar el camino seguro como el más fácil.
Mercury procesa $248.000 millones anuales con tipos fuertes en cada capa.
Contexto e historia
Haskell nació en 1990 como un esfuerzo académico para unificar lenguajes funcionales puros. Tiene tipos fuertes, evaluación perezosa y un sistema de efectos basado en mónadas que asusta a quien viene de Java o Python. Por años fue el lenguaje preferido de papers, libros de teoría de tipos y trabajo de compiladores. Su uso comercial existió desde temprano —Standard Chartered, Galois, Tweag, Facebook— pero siempre como nicho, no como base de stack masivo.
Mercury rompe ese patrón. Fundada en 2017 por Immad Akhund, Max Tagher y Jason Zhang, eligió Haskell desde el día cero por una razón pragmática: querían eliminar de raíz categorías enteras de bugs antes de que el sistema tocara dinero. La empresa creció en menos de una década hasta una valuación reportada cercana a los $3.500 millones de dólares y un volumen de operaciones que ya rivaliza con bancos regionales tradicionales. La carta bancaria nacional que persigue ante la OCC sería un paso poco común: las fintechs suelen depender de bancos socios.
El contexto importa porque el artículo de Duncan llega después de varios anuncios públicos de empresas que abandonaron Haskell por dificultades de contratación o complejidad. Mercury responde con cifras: la operación funciona, el equipo crece y los nuevos ingenieros se vuelven productivos sin necesitar un doctorado en teoría de categorías.
Por qué funciona Haskell en producción a esta escala
Duncan resume su filosofía operativa con una frase: la confiabilidad no es la ausencia de fallos, es la capacidad adaptativa. Un sistema confiable absorbe variación, degrada de forma elegante y hace que el camino correcto sea el más fácil de tomar. Para sostener eso con cientos de ingenieros, muchos con menos de un año en el lenguaje, Mercury empuja varias prácticas concretas.
1. Tipos como documentación viva
En lugar de comentarios que se desactualizan, los tipos en Haskell sirven como contrato verificado por el compilador. Cuando una función recibe un Customer validado en lugar de un simple Text, todo el flujo de datos refleja qué es seguro y qué no. Para un nuevo ingeniero, leer un módulo equivale a leer su API documentada con garantías matemáticas.
2. Maquinaria peligrosa detrás de fronteras estrechas
Operaciones que pueden romper estado —ejecutar SQL crudo, mover dinero, tocar caché— viven detrás de tipos restringidos que sólo se construyen en lugares específicos. El compilador rechaza llamadas accidentales. Esto convierte la revisión de código y el entrenamiento en algo posible: la gente nueva no puede prender fuego al granero sin tropezar con varias señales de stop.
3. El camino seguro es el camino fácil
Mercury invierte en scaffolding de ergonomía: bibliotecas internas que envuelven patrones complejos detrás de funciones simples y predecibles. Si registrar una transacción auditada toma una línea bien tipada, nadie va a copiar y pegar SQL crudo de Stack Overflow.
-- Tipo que solo se construye dentro del modulo de transacciones
newtype TransactionToken = TransactionToken { runToken :: UUID }
-- Esta funcion es la unica forma de mover dinero
moveFunds :: TransactionToken -> Account -> Account -> Money -> IO Result
moveFunds token from to amount =
withAuditLog token $ do
debit from amount
credit to amount
pure Success
El detalle es invisible para el lector casual, pero crítico: nadie puede llamar moveFunds sin un TransactionToken, y ese token sólo se obtiene a través del flujo oficial de validación. La auditoría queda envuelta automáticamente.
💭 Clave: En sistemas que tocan dinero, no alcanza con tener buenas pautas. Tenés que diseñar la API de modo que escribir el camino incorrecto sea, literalmente, más trabajo.
Datos y cifras de Mercury en 2025
El artículo y las publicaciones financieras recientes de la empresa permiten armar un cuadro claro:
- 2.000.000 de líneas de Haskell en producción, sin contar comentarios ni archivos generados.
- $248.000 millones en volumen de transacciones procesadas durante 2025.
- $650 millones en revenue anualizado.
- 300.000+ negocios como clientes activos.
- 1.500 empleados aproximadamente.
- $2.000 millones en depósitos nuevos en cinco días durante la crisis de SVB en 2023.
- Solicitud activa de carta bancaria nacional ante la OCC.
La proporción importa. Es una fintech mediana en headcount con volumen de banco grande, y la cantidad de código por ingeniero —del orden de 1.300 líneas por persona— se mantiene manejable sólo porque la abstracción del lenguaje hace que cada línea cargue más significado.
El path crítico de una transacción atraviesa varias capas de tipos.
Cómo se ve un flujo de transacción
Para visualizar lo que Duncan describe, este diagrama refleja a alto nivel cómo una operación que mueve dinero atraviesa el sistema:
graph LR
A[Cliente] --> B["API Servant"]
B --> C{"Validacion de tipos"}
C -->|valido| D["Logica de dominio"]
C -->|invalido| E["Error 400"]
D --> F[(PostgreSQL)]
D --> G["Audit Log"]
D --> H["Notificacion async"]
Cada arista es una frontera de tipos. Si un dato no está validado, no llega a la lógica de dominio. Si la lógica de dominio quiere persistir, lo hace a través de funciones que también garantizan el log de auditoría. Equivocarse requiere salirse del andén, no quedarse en él.
💡 Tip: Esta estrategia es replicable en TypeScript con branded types, en Rust con newtypes y en Kotlin con value classes. No necesitás Haskell para empezar a separar lo validado de lo no validado.
Impacto y análisis para LATAM
Para equipos en español que no escriben Haskell, hay tres lecciones que cruzan lenguaje y cultura. La primera es que Haskell en producción es viable cuando la empresa decide invertir en pedagogía interna. Mercury contrata generalistas y los entrena. Su onboarding empuja el lenguaje como una herramienta, no como un templo. Ese mismo modelo aplica a cualquier stack difícil: Rust, Elixir, Scala o Clojure.
La segunda lección es que la capacidad adaptativa importa más que el conteo de bugs prevenidos. Patrick McKenzie observa que en una empresa que crece al 2x anual, la mitad del equipo siempre tendrá menos de un año de experiencia. Las decisiones técnicas tienen que sobrevivir a esa rotación. Sistemas que sólo el autor original entiende son una bomba de tiempo cuando esa persona se va. Tipos fuertes, módulos con fronteras claras y tests que documentan invariantes son tres formas de empacar conocimiento donde no se evapora.
La tercera lección es de mercado. Empresas LATAM que mueven dinero —Nubank, Ualá, Mercado Pago, Kushki, Clip, dLocal— enfrentan los mismos problemas que Mercury en estructura de datos críticos. La elección del lenguaje es secundaria; la decisión real es cuántas garantías tu stack obliga a respetar. Si tu sistema permite que transferDinero(montoNegativo) compile sin chistar, no estás peleando con la complejidad: la estás invitando.
⚠️ Ojo: Mercury también recuerda que tenés que poder contratar. Si elegís un stack difícil, asegurate de tener presupuesto y paciencia para entrenar gente. Sin esa inversión, la elegancia técnica se convierte en deuda organizacional.
Qué sigue
Mercury tiene tres frentes abiertos. El primero es regulatorio: si la OCC aprueba la carta bancaria nacional, Mercury dejaría de depender de bancos socios y pasaría a operar como banco completo en Estados Unidos. Eso aumentaría la presión sobre cumplimiento, auditoría y consistencia de datos —exactamente el terreno donde Haskell brilla.
El segundo es la serie editorial. Haskellers from the trenches apenas comienza, y la promesa es publicar más casos de uso reales en los próximos meses. Si la calidad del primer post se mantiene, va a convertirse en lectura obligatoria para equipos que evalúan adopciones de lenguajes funcionales en serio.
El tercero es producto. Mercury sigue agregando productos financieros —tarjetas, contabilidad integrada, herramientas para inversión— y cada uno se monta sobre la misma base de código. La pregunta interesante es si los 2 millones de líneas seguirán creciendo de forma controlada o si la empresa va a tener que separar dominios en servicios independientes para no sufrir tiempos de compilación insostenibles.
📖 Resumen en Telegram: Ver resumen
Preguntas frecuentes
¿Por qué Mercury eligió Haskell para una fintech?
Mercury optó por Haskell desde 2017 porque su sistema de tipos elimina categorías enteras de bugs antes de ejecutarse, lo que reduce riesgo en operaciones financieras. Los fundadores priorizaron prevenir errores costosos sobre la conveniencia inicial de un lenguaje más popular.
¿Cuántas líneas de Haskell maneja Mercury en producción?
Aproximadamente 2 millones de líneas, sin contar comentarios ni archivos generados. Es una de las bases de código más grandes que se conocen públicamente en este lenguaje.
¿Es difícil contratar ingenieros que sepan Haskell?
Mercury no contrata exclusivamente expertos en Haskell. Recluta generalistas y los entrena en el trabajo. La mayoría de su equipo de ingeniería nunca había escrito Haskell antes de entrar a la empresa.
¿Una startup LATAM puede adoptar Haskell hoy?
Técnicamente sí, pero la decisión depende del presupuesto de entrenamiento y de la disponibilidad regional de ingenieros con interés en aprenderlo. Stacks como Elixir, Rust o TypeScript con tipos estrictos suelen ser más realistas para equipos pequeños en LATAM, aunque comparten muchas de las garantías que Mercury busca.
¿Qué problemas reales evita Haskell en producción?
Excepciones de tipo, valores nulos no manejados, mezclas accidentales entre datos validados y crudos, llamadas a APIs peligrosas sin autorización explícita y muchos errores que en otros lenguajes sólo se descubren en tiempo de ejecución.
¿Dónde puedo leer el artículo original?
El post de Ian Duncan está publicado en el blog oficial de Haskell bajo el título A Couple Million Lines of Haskell: Production Engineering at Mercury, fechado el 30 de marzo de 2026.
Referencias
- Blog oficial de Haskell — Artículo de Ian Duncan publicado el 30 de marzo de 2026.
- Mercury — Sitio oficial de la empresa con información de productos y servicios.
- Haskell.org — Página oficial del lenguaje, documentación y recursos para empezar.
- GHC — Compilador estándar de Haskell usado en producción por Mercury y prácticamente toda la industria.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)