Cómo evitar fugas de espacio que afectan la corrección en Haskell

Las fugas de espacio en Haskell pueden limitar el crecimiento de la memoria o provocar errores de corrección cuando una estructura thunk conserva referencias o aplaza evaluaciones necesarias. Este artículo propone prevenirlas mediante patrones de programación defensivos y detectarlas con perfiles de

Cómo simular expresiones if dependientes en Haskell sin tipos dependientes

Este artículo explica un truco de programación en Haskell que permite escribir expresiones `if` cuyos tipos de retorno varían según el valor de la condición, algo que a primera vista parecería exigir tipos dependientes, pero que en realidad solo necesita la extensión `RebindableSyntax`. El autor pa

Haskell propone una revisión del informe de Haskell 2010 antes de fin de año

David Binder, desarrollador de la comunidad Haskell, publicó en el blog oficial del lenguaje una hoja de ruta para producir una versión revisada del Haskell 2010 Language Report, el documento normativo del lenguaje que no se actualiza desde hace 16 años. El autor sostiene que el informe se ha quedad

Codificación de tipos existenciales en Haskell mediante funciones lineales

Este artículo presenta una técnica para codificar tipos existenciales en Haskell que permite que aparezcan 'desnudos' en las signaturas de tipo, sin necesidad de envolverlos en un constructor GADT ni recurrir a la transformación CPS (estilo paso de continuación). La codificación se apoya en funcione

EDSLs de expresiones tipadas en Haskell extremo (parte 1)

Este artículo de Justin Le inaugura una serie en tres partes dedicada a explorar el extremo más sofisticado del sistema de tipos de Haskell. El objetivo es construir un lenguaje de expresiones tipado embebido (un EDSL) que permita especificar un programa una sola vez y reutilizarlo de varias formas:

Koan en Haskell: cadenas no vacías validadas en tiempo de compilación

Bellroy comparte una técnica avanzada en Haskell para representar estados inválidos como imposibles en el sistema de tipos. La pieza central es NonEmptyText, un tipo que garantiza en compilación que una cadena tenga al menos un carácter, construido a partir de RequiredTypeArguments, introducido en G

Robar ideas a la biología para acelerar la compilación de Haskell

GHC, el compilador de Haskell, incluye una extensión llamada ApplicativeDo que traduce bloques do-notation en operaciones aplicativas (<*>) cuando no existen dependencias entre instrucciones, habilitando paralelismo automático. Sin embargo, el algoritmo que produce la planificación óptima de esas op