Template Haskell ( Template Meta-Haskell para versiones anteriores) es una extensión de lenguaje experimental para el lenguaje de programación funcional Haskell , implementada en la versión 6 y posteriores del compilador Glasgow Haskell (GHC). [ 1 ]
Permite la metaprogramación en tiempo de compilación y la programación generativa mediante la manipulación de árboles de sintaxis abstracta y la posterior integración de los resultados en un programa. La sintaxis abstracta se representa utilizando tipos de datos Haskell estándar y las manipulaciones se realizan mediante funciones Haskell estándar .
Los corchetes de ' cuasi-cita ' [|se |]utilizan para obtener el árbol de sintaxis abstracta para la expresión encerrada y los corchetes de 'empalme' $(se )utilizan para convertir del árbol de sintaxis abstracta en código.
A partir de GHC-6.10, Template Haskell ofrece soporte para cuasi-citadores definidos por el usuario, lo que permite escribir analizadores sintácticos capaces de generar código Haskell a partir de una sintaxis arbitraria. Esta sintaxis se aplica en tiempo de compilación. Por ejemplo, el uso de un cuasi-citador personalizado para expresiones regulares podría tener este aspecto:
dígitosseguidosdeletras = [ $ re | \ d + \ s + | ]Ejemplo
Un modismo común es entrecomillar una expresión , realizar alguna transformación sobre ella e insertar el resultado de nuevo en el programa. Podría escribirse como:
resultado = $ ( transformar [ | entrada | ] )Referencias
- ↑ Sheard, Tim; Jones, Simon Peyton (3 de octubre de 2002). «Metaprogramación con plantillas para Haskell» . Actas del taller ACM SIGPLAN de 2002 sobre Haskell . Association for Computing Machinery. págs. 1–16 . doi : 10.1145/581690.581691 . ISBN 1581136056. S2CID 6096655 .
Enlaces externos
- Plantilla de Haskell.org Página wiki de Haskell
- Lenguajes de programación experimentales
- Familia de lenguajes de programación Haskell
- Lenguajes funcionales
- Metaprogramación