haskell macros metaprogramming template-haskell

¿Hay algún tutorial de Template Haskell para alguien que no conoce a Lisp?



macros metaprogramming (3)

Quería aprender Template Haskell pero todos los tutoriales me parecen suponer que aprendió lisp y sabe qué son las macros lisp, o que conoce alguna jerga cs theory - cosas como empalmes, cuasiquotaciones, etc ... - o algunos resultados teóricos sobre macros .

No puedo codificar una sola línea de luz (y, aunque tengo la intención de hacerlo algún día, no tengo tiempo para aprenderlo ahora). Haskell es mi primer lenguaje funcional y lo aprendí hasta el punto de que puedo codificarlo regularmente, usar mónadas, aplicativo, entender el sistema de tipos, etc ... pero no sé mucho (también quiero aprender, pero Soy demasiado estúpido para eso ...: P) sobre las cosas cs teóricas detrás de esto. Así que no tengo en cuenta la jerga que normalmente encuentro en los tutoriales de TH.

Entonces, la pregunta es: ¿existe un tutorial sobre TH para alguien que codifique a Haskell, no como un científico informático profesional, sino como un tipo que usa la programación para sus tareas diarias, que aprendió a Haskell como su primer lenguaje funcional? ¿Tal vez una introducción a las macros y la meta-programación que usan TH como ejemplo?

Gracias a todos. :)


Los mejores tutoriales introductorios de Template Haskell que conozco son dos documentos de Bulat Ziganshin. Los enlaces de la Wiki de Haskell parecen estar rotos en este momento, sin embargo puedes acceder a ellos a través de archive.org:



También podría ser útil el metaprogramación de plantilla original para Haskell por Tim Sheard y Simon Peyton Jones:

Resumen

Proponemos una nueva extensión del lenguaje de programación puramente funcional Haskell que admite la metaprogramación en tiempo de compilación. El propósito del sistema es apoyar la construcción algorítmica de programas en tiempo de compilación.

La capacidad de generar código en tiempo de compilación permite al programador implementar características tales como programas politípicos, expansión tipo macro, optimización dirigida por el usuario (como en línea) y la generación de estructuras y funciones de datos de apoyo a partir de estructuras y funciones de datos existentes.

Nuestro diseño se está implementando en el Compilador de Haskell de Glasgow, ghc.