Diseño de bibliotecas Haskell para importaciones calificadas

Fuentes: Designing Haskell libraries for qualified import

El diseño de bibliotecas en Haskell para gestionar importaciones calificadas busca equilibrar la legibilidad del código con la robustez estructural. Este enfoque, ilustrado mediante la librería otel-effectful de IDA, resuelve el problema de los conflictos de nombres entre módulos que exponen identificadores similares, como tipos de trazas y spans, que comparten el mismo nombre base 'ID'.

La estrategia consiste en definir los tipos en módulos cuyo nombre final coincide con el identificador, utilizando los componentes anteriores como espacio de nombres. Los dependientes importan entonces de forma calificada: una importación para el tipo (con un prefijo) y otra para las funciones (con un prefijo más específico). Esto permite que el código sea conciso y legible, evitando la necesidad de prefijos arbitrarios que complican la lectura.

Además, este patrón mejora la velocidad de compilación al permitir que GHC paralelice la compilación de módulos independientes. Al reducir las dependencias cruzadas, se optimiza el uso de los núcleos de CPU. Aunque la librería no está optimizada específicamente para esto, el diseño facilita la paralelización. Se recomienda el uso de NoImplicitPrelude para evitar conflictos con funciones del Prelude, salvo en el caso de operadores infix, que se importan sin calificadores para mantener la sintaxis fluida.