Principal Type Sepcialization of Dynamic Sum-Types Tesina de Licenciatura en Cs. de la Computación...

Preview:

Citation preview

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. Russorusso@fceia.unr.edu.ar

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

Introducción

Program Specialization(Partial Evaluation)

Source Code

Residual Codes

Type Specialization

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

➔Refinar el sistema de tipos del lenguajeresidual

Residual Type System

Residual Program

Source Program

Source Type System

➔Resumiendo...

InformaciónEstática

InformaciónDinámica

➔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

Source Program

Residual Program

Source Program

Residual Program

Source Program

Residual Program

Source Program

Residual Program

Source Type Residual Type

Source Program

Residual Program

Source Type Residual Type

Source Program

Residual Program

Source Type Residual Type

➔Ejemplos...

➔Ejemplos...

¿en qué influye esta decisión?

➔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

➔¿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)

Principal Type Specialization

•Queremos especializar en forma modular

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

•Haskell

➔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

➔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

➔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

Source Program

Source Type

SpecializationAssignment

(Free Variables)

Conjunto de Predicados

➔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

➔Las reglas...

Entailment

➔Las reglas (continuación)...

➔Ejemplos...

➔¿Conocer todos los specs?

Principal Type Specialization of Dynamic Sum-Types

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

Desapareció una rama

¿?

➔¿Principalidad?

➔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

➔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)

¿Preguntas?

Recommended