Diseño de un lenguaje tipado con mecanismos de reflexión de código
Supervisor(es): Pardo, Alberto - Viola, Alfredo
Resumen:
En este trabajo se estudia el problema de diseñar un lenguaje de programación que pueda soportar ciertas formas de reflexión de manera de proveer de flexibilidad y a su vez garantice algún nivel de seguridad de tipado. Se presenta la definición de un lenguaje con primitivas de reflexión de código, es decir, con la capacidad de manipular representaciones de código en tiempo de ejecución. Se propone un lenguaje funcional multi-etapas homogéneo, basado en un cálculo lambda simplemente tipado con un operador de punto fijo, anotaciones de etapas, sustitución explícita sobre el código y un mecanismo de pattern matching. Mediante este último se provee la capacidad de realizar análisis de código, utilizando patrones de código para la inspección de la estructura de expresiones citadas y su destrucción en sus partes componentes. El tipo para los valores de código captura el contexto de tipado para sus variables libres, pero no incluye el tipo del código. Por lo tanto, evaluar expresiones de código implica realizar un chequeo dinámico de tipos. Las expresiones citadas incluyen una anotación explícita de su
contexto, la cual se utiliza para la inferencia dinámica de tipos durante el tipado de las expresiones de código. Se sigue la propuesta de Sheard de utilizar el meta-lenguaje Omega como una herramienta para el diseño de lenguajes. En este sentido, se codificaron las semánticas estática
y dinámica del lenguaje propuesto en términos de construcciones de Omega. Se argumenta la corrección del sistema de tipos del lenguaje con respecto a su semántica operacional en base al sistema de tipos del meta-lenguaje, concluyéndose que la evaluación de toda expresión bien tipada no falla.
2007 | |
Reflexión Sistemas de Tipos Programación Multi-etapas Análisis Intensional Meta-lenguaje Omega Omega |
|
Español | |
Universidad de la República | |
COLIBRI | |
http://hdl.handle.net/20.500.12008/2948 | |
Acceso abierto | |
Licencia Creative Commons Atribución – No Comercial – Sin Derivadas (CC BY-NC-ND 4.0) |
Sumario: | En este trabajo se estudia el problema de diseñar un lenguaje de programación que pueda soportar ciertas formas de reflexión de manera de proveer de flexibilidad y a su vez garantice algún nivel de seguridad de tipado. Se presenta la definición de un lenguaje con primitivas de reflexión de código, es decir, con la capacidad de manipular representaciones de código en tiempo de ejecución. Se propone un lenguaje funcional multi-etapas homogéneo, basado en un cálculo lambda simplemente tipado con un operador de punto fijo, anotaciones de etapas, sustitución explícita sobre el código y un mecanismo de pattern matching. Mediante este último se provee la capacidad de realizar análisis de código, utilizando patrones de código para la inspección de la estructura de expresiones citadas y su destrucción en sus partes componentes. El tipo para los valores de código captura el contexto de tipado para sus variables libres, pero no incluye el tipo del código. Por lo tanto, evaluar expresiones de código implica realizar un chequeo dinámico de tipos. Las expresiones citadas incluyen una anotación explícita de su |
---|