Upload
backdrag-sirius-vargas
View
27
Download
3
Embed Size (px)
DESCRIPTION
Lenguajes
Citation preview
Tipos y Lenguajes de programacin
Tipos y Lenguajes de programacin
Benjamin C. Pierce
La Prensa de MITCambridge, MassachusettsLondres, Inglaterra
2002 Benjamin C. Pierce
Reservados todos los derechos. Ninguna parte de este libro puede ser reproducida en cualquier forma por ninguno electrnico de medios mecnicos (incluso fotocopia, grabacin, o almacenaje de informacin y recuperacin) sin el permiso por escrito del editor.
Este libro fue puesto en el Lucida Brillante por el autor que usa el sistema de preparacin de documentos de LTEX.
Imprimido y ligado en los Estados Unidos de Amrica.
Biblioteca de Datos de catalogacin en la Publicacin de Congreso
Perfore, Benjamin C.Tipos y lenguajes de programacin / Benjamin C. Pierce p. cm.Incluye referencias bibliogrficas e ndice.ISBN 0-262-16209-1 (hc.: papel de alk.)1. Lenguajes de programacin (Ordenadores electrnicos). Yo. Ttulo.
QA76.7.P54 2002005.13dc21
2001044428
Contenido
Prefacio xiii
1 Introduccin 11.1 Tipos en Ciencia de la Computacin11.2 Qu tipo de sistemas son buenos para 41.3 Tipos de sistemas y diseo de lenguajes 91.4 Desarrollo Histrico101.5 Lectura relacionada 12
2 Matemticas Preliminares152.1 Conjuntos, relaciones y funciones 152.2 Conjuntos ordenados162.3 Sucesiones182.4 Induccin 192.5 Lecturas anteriores 20
I Sistemas sin tipo21
3 Expresiones Aritmticas sin tipo233.1 Introduccin 233.2 Sintaxis 263.3 Induccin de Trminos 293.4 Estilos semnticos 323.5 Evaluacin343.6 Notas 43
vi Contents
4 Una implementacin ML de expresiones aritmticas454.1 Sintaxis 464.2 Evaluacin474.3 El Resto de la historia 49
5 El clculo Lambda sin tipo 515.1 Fundamentos525.2 La programacin en el clculo Lambda585.3 Formalidades 685.4 Notas 73
6 Representacin sin nombre de trminos 756.1 Trminos y Contextos 766.2 Desplazamiento y sustitucin786.3 Evaluacin80
7 Una Realizacin ML del clculo Lambda 837.1 Trminos y Contextos 837.2 Desplazamiento y sustitucin 857.3 Evaluacin877.4 Notas 88
II Tipos simples 89
8 Tipos expresiones aritmticas918.1 Tipos 918.2 La Relacin escrita928.3 Seguridad = Progreso + Preservacin95
9 Simplemente clculo Lambda 999.1 Tipos de funcin 999.2 La Relacin escrita1009.3 Propiedades de escritura1049.4 La correspondencia Curry-Howard1089.5 Erasure y Typability 1099.6 Curry-Style vs. Church-Style1119.7 Notas 111
10 Una implementacin ML de Tipos Simples 11310.1 Contextos 11310.2 Trminos y Tipos 11510.3 Verificacin de tipos115
Contents vii
11 Extensiones Simples11711.1 Tipos base 11711.2 El Tipo de Unidad 11811.3 Formas derivadas: Secuenciacin y comodines11911.4 Atribucin 12111.5 Permitir enlaces 12411.6 Pares 12611.7 Tuplas 12811.8 Archivos 12911.9 Sumas 13211.10 Variantes 13611.11 Recursin General 14211.12 Listas 146
12 Normalizacin14912.1 Normalizacin para Tipos Simples 14912.2 Notas 152
13 Referencias 15313.1 Introduccin 15313.2 Escritura15913.3 Evaluacin15913.4 Almacenamiento de tipos16213.5 Seguridad 16513.6 Notas 170
14 Excepciones17114.1 Aumento de Excepciones 17214.2 Manejo de Excepciones 17314.3 Excepciones que producen valores 175
III Subtipificacin179
15 Subtipificacin 18115.1 Bajo consumo 18115.2 La Relacin de Subtipo 18215.3 Propiedades de Subtipos y tipos 18815.4 Tipos superiores e inferiores19115.5 La subtitpificacin y otras caractersticas19315.6 Cohesin semntica para subtipificacin20015.7 Interseccin y tipos de Unin 20615.8 Notas 207
viii Contenido
16 Metateora de Subtipificacin 20916.1 Subtipificacin algortmica21016.2 Tipificacin algortmica21316.3 Unin y reunin21816.4 Tipificacin algortmica y el tipos inferiores220
17 Una Realizacin ML de Subtipificacin22117.1 Sintaxis 22117.2 Subtipificacin 22117.3 Tipificacin222
18 Caso de estudio: Objetos Imperativos22518.1 Qu es la Programacin orientada a objetos?22518.2 Objetos 22818.3 Generadores de objeto 22918.4 Subtipificacin 22918.5 Adicin de variables de Instancia 23018.6 Clases simples23118.7 Adicin de Variables de Instancia23318.8 Llamando Mtodos de Superclase 23418.9 Clases con sigo misma23418.10 Iniciar Recursin a travs de la misma 23518.11 Iniciar Recursin y orden de evaluacin 23718.12 Una implementacin ms eficiente 24118.13 Recapitulacin24418.14 Notas 245
19 Estudio del caso: Peso pluma Java 24719.1 Introduccin 24719.2 Descripcin 24919.3 Sistemas de tipos nominales y estructurales 25119.4 Definiciones 25419.5 Propiedades 26119.6 Codificacin contra Objetos Primitivos 26219.7 Notas 263
Contents ix
IV Tipos recurrentes 265
20 Tipos Recurrentes 267
20.1 Ejemplos 26820.2 Formalidades 27520.3 Subtipificacin 27920.4 Notas 279
21 Metateora de Tipos Recursivos 281
21.1 Induccin y Coinduccin28221.2 Tipos finitos e Infinitos 28421.3 Subtipificacin 28621.4 Una generalidad en transitividad 28821.5 Comprobacin de pertenencia 29021.6 Algoritmos ms eficientes 29521.7 rboles regulares 29821.8 Tipos-29921.9 Contando Subexpresiones30421.10 Generalidad: Un Algoritmo Exponencial 30921.11 Subtipificacin Iso-recursiva de tipos 31121.12 Notas 312
V Polimorfismo 315
22 Reconstruccin de Tipo 317
22.1 Tipos de variables y sustituciones 31722.2 Dos Visiones de tipos de variables 31922.3 Tipificacin basada en restricciones32122.4 Unificacin 32622.5 Tipos principales 32922.6 Anotaciones de Tipo implcitas 33022.7 Dejar el Polimorfismo 33122.8 Notas 336
23 Tipos Universales 339
23.1 Motivacin 33923.2 Variedades de Polimorfismo 34023.3 Sistema F34123.4 Ejemplos 34423.5 Propiedades bsicas35323.6 Borrado, tipificacin y reconstruccin de tipos354
x Contents
23.7 Borrado y orden de evaluacin 35723.8 Fragmentos de Sistema F35823.9 Parametricity35923.10 Impredicativity 36023.11 Notas 361
24 Tipos Existenciales 36324.1 Motivacin 36324.2 Abstraccin de datos existenciales36824.3 Codificaciones existenciales37724.4 Notas 379
25 Una Realizacin ML de Sistema F38125.1 Representacin annima de Tipos 38125.2 Tipo de cambio y sustitucin38225.3 Trminos 38325.4 Evaluacin38525.5 Tipificacin 386
26 Cuantificacin Bounded389
26.1Motivacin389
26.2Definiciones391
26.3Ejemplos396
26.4 Seguridad 40026.5 Tipos Existenciales Bounded 40626.6 Notas 408
27 Caso de estudio: Objetos Imperativos, Redux 411
28 Metateoria de cuantificacin Bounded 41728.1 Exposicin 41728.2 Tipificacin Minimal41828.3 Subtipificacin en Kernel F