haskell syntactic-sugar do-notation

¿Es posible rodar su propia sintaxis de azúcar(como notación-do o notación de flecha) en Haskell?



syntactic-sugar do-notation (2)

No hay tal meta-sintaxis en el estándar de Haskell, pero sí en GHC. Puede hacer casi cualquier notación que desee utilizando las facilidades de "cuasi cotización" de GHC (que son diferentes de las facilidades de "Plantilla Haskell" de GHC).

La guía del usuario de GHC sobre este tema es bastante corta, y principalmente apunta a la página de wiki de haskell en Quasiquotation y la página de inicio del implementador, ambas apuntan a la publicación original: "Por qué es bueno citar: Quasiquoting for Haskell" .

La gente ha usado la casi cita para incrustar sintaxis XML, expresiones regulares, cadenas especiales y formas de texto, y en "JMacro es una biblioteca para la generación programática de código Javascript".

Bueno, la pregunta es auto explicativa. Supongamos que quiero implementar una sintaxis especial solo por diversión. ¿Es posible? ¿Qué herramientas debo usar?


Supongo que la mejor manera sería escribir un preprocesador personalizado. Varias extensiones sintácticas comenzaron a partir de este enfoque. Por ejemplo, ver:

  • DrIFt : generación automatizada de instancias de clase de tipo
  • arrowp : preprocesador para notación de flecha
  • c2hs : Generación automatizada de información de clasificación y firmas de tipo para enlaces FFI

y muchos más. La otra forma es parchear el GHC, pero este enfoque es bastante difícil.