La Noción De Principalidad En Especialización De Tipos
Total Page:16
File Type:pdf, Size:1020Kb
Tesis Doctoral La noción de principalidad en especialización de tipos Martínez López, Pablo E. 2005-11-15 Este documento forma parte de la colección de tesis doctorales y de maestría de la Biblioteca Central Dr. Luis Federico Leloir, disponible en digital.bl.fcen.uba.ar. Su utilización debe ser acompañada por la cita bibliográfica con reconocimiento de la fuente. This document is part of the doctoral theses collection of the Central Library Dr. Luis Federico Leloir, available in digital.bl.fcen.uba.ar. It should be used accompanied by the corresponding citation acknowledging the source. Cita tipo APA: Martínez López, Pablo E.. (2005-11-15). La noción de principalidad en especialización de tipos. Facultad de Ciencias Exactas y Naturales. Universidad de Buenos Aires. Cita tipo Chicago: Martínez López, Pablo E.. "La noción de principalidad en especialización de tipos". Facultad de Ciencias Exactas y Naturales. Universidad de Buenos Aires. 2005-11-15. Dirección: Biblioteca Central Dr. Luis F. Leloir, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires. Contacto: [email protected] Intendente Güiraldes 2160 - C1428EGA - Tel. (++54 +11) 4789-9293 La Noci´on de Principalidad en Especializaci´on de Tipos Tesis de Doctorado para obtener el grado de Doctor de la Universidad Nacional de Buenos Aires, en el ´area de Ciencias de la Computaci´on por Pablo E. Mart´ınez L´opez Director: Dr. John Hughes Consejero: Dr. Alfredo Olivero Departamento de Computaci´on Facultad de Ciencias Exactas y Naturales Universidad Nacional de Buenos Aires Argentina Buenos Aires, Noviembre 2005 Director: Dr. John Hughes Chalmers Tekniska H¨ogskola Institutionen f¨or Datavetenskap S-412 96 G¨oteborg Sweden - Sverige Consejero: Dr. Alfredo Olivero Departamento de Computaci´on, FCEyN Universidad Nacional de Buenos Aires Planta Baja, Pabell´on I, Ciudad Universitaria (1428) Buenos Aires, Argentina La investigaci´on reportada aqu´ı fue apoyada por una beca FOMEC (1998-2001) del Proyecto N◦ EX 376 de la Universidad de Buenos Aires, coordinado por la Lic. Irene Loiseau, Universidad de Buenos Aires, y por una beca del Proyecto ALFA-CORDIAL N◦ ALR/B73011/94.04-5.0348.9 (1998-2005) de la Uni´on Europea, coordinado por el Dr. Fernando Orejas, Universidad de Catalunya. La Noci´on de Principalidad en Especializaci´on de Tipos Copyright c Pablo E. Mart´ınez L´opez, 2005 E-mail: [email protected] http://www-lifia.info.unlp.edu.ar/~fidel Para quienes son la raz´on de estar vivo: Lorena, Aylen y Lautaro. Resumen ... —¿Qu´e rayos fue eso? — Eso fue un comienzo, Matthew. Algo viaj´o de un estado de exis- tencia a otro. Vino de uno de los m´as distantes arrecifes del sue˜no. Observemos las consecuencias. A Game of You – The Sandman Neil Gaiman, Shawn Mc Manis Cuando se consideran las maneras de producir programas, la t´ecnica principal que viene a la mente de cada uno de nosotros es la de escribir el programa a mano. Aunque existen t´ecnicas de derivaci´on y herramientas para producir programas autom´aticamen- te, su aplicaci´on est´a usualmente restringida a cierta clase de problemas, o ciertos domi- nios (como los generadores de parsers, o las interfaces visuales). En los casos donde tales t´ecnicas se pueden aplicar, la productividad y la confiabilidad se ven ampliamente in- crementadas. Por esa raz´on, nos interesamos en la producci´on autom´atica de programas en un marco general. La especializaci´on de programas es una manera particular de producir programas autom´aticamente. En ella se utiliza un programa fuente general dado para generar diversas versiones particulares, especializadas, del mismo, cada una resolviendo una in- stancia particular del problema original. La t´ecnica m´as conocida y m´as ampliamente estudiada de especializaci´on de programas es llamada evaluaci´on parcial; se la ha uti- lizado con ´exito en variasareas ´ de aplicaci´on diferentes. Sin embargo, la evaluaci´on parcial tiene problemas cuando se considera la producci´on autom´atica de programas con tipos. La especializaci´on de tipos es una forma de especializaci´on de programas que puede producir autom´aticamente programas con tipos a partir de uno fuente. Comprende diversas t´ecnicas muy poderosas, tales como especializaci´on polivariante, especializaci´on de constructores, conversi´on de clausuras; es la primera de las variantes de especializaci´on de programas que puede generar tipos arbitrarios a partir de ununico ´ programa fuente. Creemos que la especializaci´on de tipos puede ser la base sobre la que desarrollar un marco de producci´on autom´atica de programas. En esta tesis consideramos la especializaci´on de programas, extendi´endola para pro- ducir programas polim´orficos. Ilustramos eso considerando un int´erprete para un lambda c´alculo con tiposa ´ la Hindley-Milner, y especializ´andolo con cualquier programa objeto para producir un programa residual que sea esencialmente igual que el original. En la b´usqueda de la generaci´on de polimorfismo, extendemos la especializaci´on de tipos para v que pueda expresar la especializaci´on de programas con informaci´on est´atica incompleta, y probamos que para cada t´ermino podemos inferir una especializaci´on particular que puede ser usada para reconstruir cada uno de las otras especializaciones de tal t´ermino. Llamamos especializaci´on de tipos principal atalt´ecnica, debido a la analog´ıa de esta propiedad con la noci´on de tipos principales. Nuestra presentaci´on clarifica muchos de los problemas existentes en la especializaci´on de tipos, lo cual puede ser usado como una gu´ıa en la b´usqueda de soluciones para ellos. La presentaci´on se divide en cuatro partes. En la primera Parte, presentamos la Especializaci´on de Tipos en su forma original, junto con material complementario. En la Parte II desarrollamos la presentaci´on de la Especializaci´on de Tipos Principal, expli- cando todos los detalles t´ecnicos, dando varios ejemplos, y presentando nuestra imple- mentaci´on del prototipo. En la Parte III describimos las posibilidades de la formulaci´on nueva, proveyendo una extensi´on de la Especializaci´on de Tipos para generar progra- mas polim´orficos. Finalmente, laultima ´ parte describe trabajos relacionados, trabajos futuros, y concluye. Este trabajo es el resultado de siete a˜nos de investigaci´on, realizados durante mis estudios de doctorado. Palabras clave: especializaci´on principal de tipos, especializaci´on de tipos, especiali- zaci´on de programas, producci´on autom´atica de programas, programas polim´orficos. vi Agradecimientos Para Shevek el retorno siempre ser´ıa tan importante como la partida. Partir no era suficiente, o lo era s´olo a medias: necesitaba volver. En aquella tendencia asomaba ya, tal vez, la naturaleza de la inmensa exploraci´on que un d´ıa habr´ıa de emprender hasta m´as all´a de los confines de lo inteligible. De no haber tenido la profunda certeza de que era posible volver (aun cuando no fuese ´el quien volviera), y de que en verdad, como en un periplo alrededor del globo, el retorno estaba impl´ıcito en la naturaleza misma del viaje, tal vez nunca se hubiera embarcado en aquella larga aventura. Los Despose´ıdos Ursula´ K. Le Guin Es una tarea cicl´opea escribir agradecimientos. Porque ten´es que decidir: o bien escrib´ıs algo simple, como “¡¡Gracias a todos!!”, que es, por supuesto, muy vago y general, obienenumer´as a todas y cada una de las personas que te ayudaron, te animaron y apoyaron durante el largo per´ıodo que te toma ir desde ser un reci´en graduado a ser un doctor, y tratar de justificar por qu´e merecen el agradecimiento. Pero esta segunda tarea es imposible. Hay, simplemente, demasiadas personas y demasiadas razones para agradecerles. Por eso, como en muchos casos en la vida, uno tiene que llegar a un acuerdo, y terminar con un peque˜no ‘cap´ıtulo’ de agradecimientos que es incompleto, y por ello injusto con los que fueron olvidados, y sin embargo demasiado largo. As´ı que, si vos, que sab´es que estuviste all´ı conmigo cuando lo necesit´e, no te encontr´as en estas l´ıneas, no creas que no aprecio lo que hiciste, sino, simplemente que mi mente se sobrecarga a veces, y el viaje fue muy largo. Porque mis estudios de doctorado fueron un viaje, lleno a su vez de peque˜nos viajes. Y en todos los casos, como Ursula´ Le Guin ha expresado tan bien, “el verdadero viaje es el retorno”, yo regres´e. a un nuevo comienzo. Fue un viaje en conocimiento, porque aprend´ı tantas cosas nuevas (y no s´olo acad´emicas), que me siento verdaderamente perfeccionado como persona. Fue un viaje en sentimientos, en el que aprend´ı acerca de m´ı mismo, y acerca de otros, y de c´omo amarlos mejor, pelearlos, descubrirlos, divertirme con ellos, sondear nuestros l´ımites, y despu´es de todo, sobrevivir juntos, m´as ricos que antes. Fue un viaje a mundos imaginarios, Norstrilia, el Jap´on del per´ıodo Edo, el Londres de Jack el Destripador, las tierras del Sandman, el mundo de Lyra, y muchos otros que no hubiera conocido si no hubiera visitado a mi ‘gu´ıa de turistas’ en Gotemburgo. Fue un viaje en el tiempo, aprendiendo a pararme frente a un futuro impredecible, y a descubrir c´omo el pasado se revela en un nuevo comienzo con cada sorpresa, en lugar de estar cerrado y terminado. Y contuvo varios viajes en el espacio, cruzando casi la mitad del globo una vez al a˜no para encontrarme con mi director, y con esa incre´ıble comunidad de excelentes personas en Chalmers. Y siempre retorn´e, vii aunque nunca al mismo ‘lugar’ donde comenz´o el viaje, y cada vez para empezar un nuevo viaje.