29
Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario X Jornadas de Informática e Investigación Operat Facultad de Informática Alejandro C. Russo [email protected] http://www.fceia.unr.edu.ar/~russo/

Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Embed Size (px)

Citation preview

Page 1: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Principal Type Sepcialization of Dynamic Sum-Types

Tesina de Licenciatura en Cs. de la ComputaciónFac. Cs. Exactas, Ingeniería y Agrimensura

Universidad Nacional de Rosario

IX Jornadas de Informática e Investigación OperativaFacultad de Informática

Alejandro C. [email protected]

http://www.fceia.unr.edu.ar/~russo/

Page 2: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Introducción

Program Specialization(Partial Evaluation)

Source Code

Residual Codes

Page 3: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Type Specialization

➔Es una forma general de “type inference” para lograr programspecialization

➔Refinar el sistema de tipos del lenguajeresidual

Page 4: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Residual Type System

Residual Program

Source Program

Source Type System

➔Resumiendo...

InformaciónEstática

InformaciónDinámica

Page 5: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Introducción de un juicio (judgement) responsable de la especialización de programas

Source Program

Source Type

Residual Program

Residual Type

SpecializationAssignment

(Free Variables)

➔Se especifica el proceso de especialización mediante un conjunto de reglas formales

Page 6: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Page 7: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Page 8: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Page 9: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Source Type Residual Type

Page 10: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Source Type Residual Type

Page 11: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Residual Program

Source Type Residual Type

Page 12: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Ejemplos...

Page 13: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Ejemplos...

¿en qué influye esta decisión?

Page 14: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Si una expresión es polivariante, entonces puede especializarseen más de una forma

➔Marcamos en el source program qué expresiones son polivariantes y dónde se utilizan (poly / spec)

La expresión dentro de polyse especializó dos veces

➔Para armar la tupla tengo que conocer todos los spec

Otra especialización válida

Page 15: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔¿Conocer todos los specs?

•Hay infinitas especializaciones posibles (no

relacionadas)

•Para especializar la función debo esperar a

conocer su

argumento (¿especialización modular?)

•Problema: falta de principalidad (lack of

principality)

Page 16: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Principal Type Specialization

•Queremos especializar en forma modular

•En ausencia de información ¿Qué hacemos?

•Haskell

Page 17: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Queremos especializar pero, si nos falta información, diferiremos las decisiones

➔Las decisiones afectan al código generado por la especialización

➔Necesidad de principalidad

Especialización

Page 18: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Queremos especializar pero, si nos falta información, diferiremos las decisiones

➔Las decisiones afectan al código generado por la especialización

➔Necesidad de principalidad

Especialización

Page 19: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Queremos especializar pero, si nos falta información, diferiremos las decisiones

➔Las decisiones afectan al código generado por la especializacion

➔Necesidad de principalidad

Especialización

Evidencia de predicados¿Para qué nos sirve?

➔Teoría de “Qualified Types” de Mark Jones (Ph.D. Thesis, Cambridge, 1991)

➔Pablo E. Martínez López adaptó esta teoría para usarla en el proceso de especialización

Page 20: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Source Program

Source Type

SpecializationAssignment

(Free Variables)

Conjunto de Predicados

Page 21: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔El sistema P captura todas las posibles especializaciones de un source program (inclusive la principal)

➔Si escribiera un algoritmo, ¿qué especialización debería obtener?

➔Especialización Principal + Mecanismo de Instanciación Automatizable = Obtengo la especialización que necesito en el momento necesario

Unificar y calcular evidencia de predicados

Page 22: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Las reglas...

Entailment

Page 23: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Las reglas (continuación)...

Page 24: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Ejemplos...

➔¿Conocer todos los specs?

Page 25: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Principal Type Specialization of Dynamic Sum-Types

➔Introducir la capacidad de especializar dynamic sum-types➔¿Qué queremos?

Page 26: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

Desapareció una rama

¿?

➔¿Principalidad?

Page 27: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Este trabajo...

➔Se extendieron los sitemas de reglas formales para poder manipular dynamic sum-types

➔Se eliminan aquellas ramas de los cases que no son necesarias(menos código muerto)

➔No se generan declaraciones de constructores que no se utilizan(menos código muerto)

➔Libertad para combinar constructores y cases dinamicos con las construcciones poly y spec

➔Se extendieron las demostraciones de la tesis de doctorado de Pablo E. Martínez López para demostrar que el sistema sigue manteniendo la noción de principalidad

Page 28: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

➔Este trabajo (continuación II)...

➔Se extendio el prototipo ya existente (Mónadas, Clases, etc.)

➔Se detectaron y arreglaron algunos bugs

➔Se implemento constraint solving (no se formalizo)

Page 29: Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación Fac. Cs. Exactas, Ingeniería y Agrimensura Universidad

¿Preguntas?