Tilia: un formateador de Haskell que resuelve problemas de CPP y fixities

Fuentes: Tilia: a Haskell formatter solving CPP and fixity challenges

Tilia es un formateador de código para el lenguaje Haskell desarrollado desde cero, diseñado para abordar tres desafíos técnicos persistentes en la herramienta: el manejo correcto de comentarios, la inferencia precisa de las fixities de operadores y el soporte para la preprocesación de C (CPP). A diferencia de los formateadores existentes, Tilia utiliza la infraestructura de GHC para obtener información exacta sobre las fixities de los operadores, un enfoque que requiere rastrear cadenas de reexportaciones y manejar ciclos de dependencias para garantizar la precisión absoluta. La herramienta se integra con Cabal para gestionar dependencias y descargar fuentes cuando es necesario, ofreciendo una experiencia fluida tanto en proyectos Nix como en Stack. Además, Tilia implementa un soporte robusto para CPP, un constructo complejo en Haskell que introduce variabilidad condicional. Para lograr esto, el formateador enumera las configuraciones posibles del módulo, genera versiones derivadas por cada configuración y las unifica inteligentemente, reintroduciendo las directivas CPP solo donde son necesarias. Este enfoque permite mantener la legibilidad del código sin sacrificar la funcionalidad de las macros condicionales, ofreciendo una solución práctica y principial para la formateación de código Haskell moderno.