You are on page 1of 8
iNDICE GENERAL indice de figuras Prélogo Convenios I Programacién funcional basica con HASKELL 98 1. Programacién funcional Ll. Funcionss «2.2.2. eee © 1.2. Sesiones y declaraciones + 1.3. Reduccién de expresiones 1.3.1. Ordenes de reduccién aplicativo y normal 1.3.2. Evaluacién perezosa ... 2... 0... v\ L4. Sobre HASKELL ©. 2 ee 2, Intreduccién a HASKELL , 2.1, Eblenguaje HASKELL... 2... .--.-.--5- 2.2. Tipos simples predefinidos 2.2.1. Eltipo Bool . eae Eltipo Int. . Leas El tipo Integer iiiy ss wees © El tipo Float . E] tipo Double 2.2.6. El tipo Char 2.2.7, Operadores de igualdad y orden 2.3. Constructores de tipos predefinidos . , 2.3.1, Tuplas .... 2... eee . 2.3.2, Listas. .........00. 7 23.3. Elconstructor de tipo (—) . . “2.4, Comentarios : * 2.5. Operadores . ae 2.5.1. | Operadores frente a funciones ‘2.6. Comparacidn de patrones ...... - 2.6.1. Patrones constantes . XH XVIL XXIII vi indice generat 2.6.2. 2.6.3. 2.6.4. 2.6.5. 2.6.6. 2.6.7. 2.6.8. Patrones paralistas.. 2.2.2... .202.--0200000- Patrones paratuplas . . Patrones aritméticos . . Patrones nombrados 0 seudénimos . . gece oe El patron subrayado . 2... 2 ee ee Errores comunes .. 1... 2 eee ee ee Patrones y evaluacién perezosa . . . - 2.7. Expresiones case © 2 ee eee 2.8. Lafunci6nerrar. 2. ee ee 2.9. Funciones a trozos . maa 2.10. Expresiones condicionales. . . . 2.11. Definiciones locales . 2.12. Expresiones lambda 2.13. Sangrado.... . . 2.14. Ambitos y médulos see 2.15. Hjercicios 22... 2.2.0. 3. Funciones de orden superior y polimorfismo 3.1. Parcializaci6n .. 2.22... 3.1.1. 3.1.2. 3.1.3. 3.1.4, 3.2. Polimorfismo 3.2.1. 3.2.2. 3.2.3. 3.2.4, 3.2.5. Aplicaci6n parcial . . . Secciones ae cee oa Funciones de orden superior... 2... 2.202 eee Una funcién de orden superior sobre naturales .... 2... La composicién de funciones Otras funciones polimérficas Polimorfismo en listas . . se Polimorfismo entuplas......... vee ne Un iterador polimérfico sobre los naturales... 2.0.0... 4. Definicién de tipos 4.1. Sin6nimos de tipo 4.2. Definicién de tipos de datos . . . . 4.2.1. 4.2.2. 4.2.3, 424, 425. 4.2.6. 4.3. Propiedades de funciones .........-....-.-050- 43.1. 4.4. Sobrecarga y polimorfismo restringido .. . . . 44.1, 4.5. Ejercicios © ITES-Paraninfo Tipos enumerados . . . . Uniones Productos . . tee see Tipos recursivos 2.6... 0.00 ee Tipos parametrizados (0 polimérficos) . Definiciones newtype La propiedad universal de foldNat Un ejemplo de sobrecarga . . indice general vu 5. Elsistema de clases de HASKELL 105 5.1. Tipos y clases de tipos. Jerarquia de clases . . . . 105 5.1.1. Elsistemadeclases .........-- ee . 105 5.1.2. Declaracién de clase . . . . 109 5.1.3. Laclase Egde PRELUDE . 1 peas - ii 5.2. Contextos ...-.--..--0-8 112 5.2.1. Instancias paramétricas 1... eee ee ee 115 5.3. Subclases. La clase Ord de PRELUDE is 5.3.1. Un ejemplo: los enteros médulon. . . - eae ~ 18 5.3.2. Intersecci6n de clases .........- wee 118 5.4. Visualizando y leyendo datos. Read y Show ~ LED 5.5. Las clases Num, Integral y Fractional de PRELUDE .......-- 122 5.5.1. Los tipos numéricos de HASKELL 123 5.5.2. Ambigiiedad en las constantes numéricas 125 5.5.3. Promocién numérica... ...--.. Par 126 5.5.4. Ejemplo: los racionales como instancias genéricas ..... . 128 5.6. Bjercicios 2. ee 129 6. Programacién con listas 131 6.1. Eltipolista. 0.000000. 131 6.1.1. Secuencias aritméticas. Laclase Enum . . 132 6.2. Concatenacién de listas 134 6.3. Induccién sobre listas . sae see 136 6.4. Selectores ........------% 137 6.5. Emparejandolistas..-. 2-2-2 ee ee ee 140 6.6. Aplicando una funcién a los elementos de una lista . 141 6.7. Filtros ........- 142 6.8. Listas por comprensién wee 144 6.8.1. Seméantica de listas por comprensi6n .......---.0- 147 6.9. Plegado de listas 69.1. foldr ...... Lees 6. La propiedad universal de foldr ... 2-0-2. ee eee 151 69.3, foldl .. 2.2.0.6 .20-- 6.10. Ordenacién de listas . . . 6.10.1, Ordenacién por insercién 6.10.2. Ordenacién por mezcla. . . . pene 6.10.3. Ordenaciénrépida .. 2.2... . 10. - 6.11. Problemas combinatorios ...-....--..-.- 6.11.1. Los segmentos iniciales de una lista 159 6.11.2. Los segmentos consecutivos de una lista 160 6.11.3. Permutaciones de una lista a 161 6.12. Otras funciones predefinidas. 2... 6.0.02 ee eee eee 162 6.13. Ejercicios 2... eee 164 vin indice general 7. Entrada y salida 169 7.1. Operaciones de entraday salida...........-....-.00.4 169 7.1.1. El problema de la entrada y salida . 169 Eltipo7O ........... 170 Excepciones .. . 172 7.2. Un formateador de textos . 174 7.21, Una implementacién ineficiente 175 7.2.2, Unaimplementaciéneficiente .. 2... .0.......0048 V7 Utilidades para el manejo de documentos . . ween. 179 Una clase de tipos documentables 2... ee 179 Ejemplos 2... 2 ee 180 Il Programacién avanzada 183 8. Evaluacién perezosa. Redes de procesos 185 8.1. Evaluaci6n perezosa... 2. eee 185 8.1.1. Argumentos estrictos tae 185 8.1.2. Procesando estructuras infinitas en forma perezosa . . . . 186 8.2. Listas parciales y listas infinitas 189 8.2.1. | Aproximaciones o listas parciales . 189 8. Inducci6n sobre listas parciales 190 8.3. Redes finitas de procesos ........ we sees 191 8.3.1. Lacribade Eratéstenes 2... es 193 8.3.2. Eltriangulode Pascal... 2. 2. 2 ee 195 Procesos con varias entradas . . bee sees. 196 La lista de factoriales.. 2.2.2.2... 2-2. eee Los némeros de Fibonacci Sucesiones genéricas. ... . . 8.3.7. Los ntimeros de Hamming . . . 8.4. Sucesiones contadoras . . . er =e ue 8.5. Ejercicios ©. 2 ee 9. Programacién con drboles y grafos 9.1. Arboles. . 9.1.1. Funciones de orden superior sobre arboles 9.2. Arboles binarios . 2. eee Arboles binarios de biisqueda : Funciones de orden superior para érboles binarios oe mae 219 Induccidn para drboles binarios ......-. . 9.3. AMTAYS oe ee Una implementaci6n ineficiente Una implementacién eficiente . 9.4. Grafos y biisqueda en grafos..... . . 9.4.1, Biisqueda en anchura y en profundidad 9.4.2. Los grafos como instancias de una clase uniparamétrica . . . 229 © ITES-Paraninto indice general Xx 95. 9.6. 10. Programacién modular y tipos abstractos de datos Grafos con pesos. 2... ee 232 9.5.1. Grafos con pesos como instancias de clases biparamétricas . . 232 9.5.2. Una clase HASKELL para grafos con pesos : Ejercicios 6 236 10.1. Médulos ......-..----- 10.2. Bibliotecas estandarizadas . 10.3. Declaraciones de médulos . . . . 10.4, Importacin ............ 10.4.1. Importacién cualificada 10.5. Tipos abstractos de datos ..... mi an oe 10.6. RepresentaciOn. . 2... ee 10.6.1. Representacién con una interfaz no sobrecargada . . . . 10. Representaci6n con una interfaz sobrecargada 10.7. El TAD Conjunto (Conjunto). 6... 0 0 ee 10.8. Et TAD Lista Ordenada (OrdLista) ... . . 10.9. EI TAD Diccionario (Diccionario) ..... 10.10. Un indice KWIC (KeyWord In Context) 10.10,1. Datos del problema... ...-......----00-20-5 258 10.10.2. Lafunciénkwic 0. ee 259 10.10.3. Algunas funciones y sinénimos de tipos titiles 259 10.10.4. La funcién creaNoClaves . 2... 2.02 261 10.10.5. Modelo de datos para Ja resolucién 261 10.10.6. La funcién kwicl 2... 2 os 262 10.11. Bjercicios 2 ee ee 264 1. Programacién con ménadas 265 11.1. Concepto de ménada........ 265 11.2. Clases de constructores de tipos . . 266 11.2.1. Laclase Functor... .. 266 Laclase Monad ..... 269 .2.3. Laclase MonadPlus . 272 11.3. Interpretacién de las propiedades . . 273 11.3.1. Interpretacién del operador (>= ) 276 11.4. Relacién entre funtor y ménada...... wae -- 277 HLS. Lanotacion do... ee eee 280 11.6. Ejemplos de ménadas .........--20-0...02000--0-058 283 11.6.1. La ménada identidad . . . 283 La m6nada escritora . . a nas 284 . Laménadalectora.. 2.1... 0.02 286 . Laménada de transformadores de estado . . . 288 La lista como monada indeterminista 291 La m6nada error 292 11.7. Operaciones con ménadas 296 11.7.1, Combinando ménadas 297 © ITES-Paraninfo x indice general c. 11.7.2. Transformadores monddicos . . oe sae. 298 11.8. Hjercicios 6... eee 302 TI Aplicaciones 303 12, Algoritmos numéricos programados funcionalmente 305 12.1. IntroducciOn . 2... eee 12.2. Busqueda de puntos fijos ©... ee 12.3, Extrapolacién por paso al limite. . . 12.4. Algebra lineal numérica 12.5. Series de potencias. .. . . see wee 12.6. Ejercicios 2.0 ee 316 13. Puzzles y solitarios 13.1. 13.2. 13.3. 13.4, 13.5. Algunos problemas combinatorios 13.1.1. El producto maximo con un conjunto de digitos . 13.1 El problema de las vasijas 13.1.3. El problema de los canibales y los misioneros , . 13.1.4. Elsolitariode Abreu... 2... ee Lasopadeletras........... 13.2.1. Un esbozo de la solucion 13.2.2. Buscando las apariciones de una palabra 13.2.3, Movimiento de matrices y lecturas de lineas ot El problema de las ocho reinas ©... 2 ee ee ee 13.3.1, Soluciones mediante listas por comprensién 13.3.2. Solucién mediante biisqueda en grafos tee 13.3.3, Grafosaciclicos ©... eee Programaci6n funcional estilo PROLOG. . . . Ejercicios ee 14, Analizadores 345 14.1. 14.2. 14.3. Analizadores y laclase Read . 2... ee eee 345, 14.1.1. Gramiticas y la notacién BNF... . El tipo Read 14.1.3. Laclase Read . Analizadores monddicos . 14.2.1. Secuenciacién . oe Bee eee 14.2.2. Alemancia..............02-.0. 14.2.3. Filtros 14. Iteraci6n ... . 14. Elecci6n parcial. . 14.2.6. Umanalizador para términos . 2... 22.2... ee 363 Ejercicios ©... ee eee 366 © ITES-Paraninto indice general xt 15. Simulacién 369 15.1. Generacién de aleatorios por congruencias ............--- 369 15.1.1. Programando secuencias pseudo-aleatorias .......... 370 15.1.2. Algunos resultados teéricos 15.2, Simulacién en el juego del péquer . 15.2.1. Generando un mazo de cartas . 15.2.2. Btisqueda de ciertas jugadas: parejas, trios, ete Dy wees 375 15.2.3. Contando todas las jugadas ... 1... . 15.3. Obteniendo semillas y aleatorios a través del sistema . 15.3.1. Un modelo monddico para la simulacién 15.4. El juego de la loteria primitiva. ..........0.. 15.4.1. Realizando escrutinios .....-.....--- 15.4.2. Generacién de sorteos 2... ee ee 15.4.3, Estudio estadistico de ciertas combinaciones . 15.4.4. Descripcién monddica del juego de la primitiva 15.5, Simulacién monddica de juegos condados ....... 15.5.1. Mezclando valores producidos por varias acciones ... . . . 389 15.5.2. Plegando valores monddicos .......... 15.5.3. Repeticién de varias tiradas con varios dados . 15.5.4. Contabilizando jugadas 2... 1. ee IV_ Aspectos teéricos 395 16. Técnicas de programacién y transformaciones de programas 397 16.1. Induccién estructural ee 397 16.2. Pardmetros acumuladores . . bee 405 16.2.1. Los mimeros de Fibonacci... . 6... 2. - oe. 405 16.2.2. Calculo del factorial de un natural. 2.2.2. eee 410 16.2.3. Plegadosestrictos ©... 2.2... ee es 4l4 16.3. Transformacién de programas. El modelo desplegar/plegar » AIT 16.3.1. Un ejemplo sencillo de transformacién .... . .. 417 16.3.2. Las reglas desplegar/plegar ..---.-.---- ~. 418 16.3.3. Reduccién de la complejidad por transformacién -. 420 16.3.4. Correcci6n parcial de los programas transformados . ». 425 16.4. Programas a partir de especificaciones ». 425 16.4.1. Especificaciones ejecutables . . . . -. 426 16.4.2. Especificaciones no ejecutables . . wees 426 16.4.3. Transformacién de una especificacién no ejecutable pause 427 16.5. Seméntica denotacional de un lenguaje imperativo 430 16.5.1. Representacién de entornos con tuplas .... - wee 432 16.5.2. Representacién de entornos con funciones oe 434 16.5.3, El lenguaje imperativo de Dijkstra... ... =. -.. 437 16. Una semdntica determinista para el lenguaje de Dijkstra. . 2. 439 16.5.5. Una seméntica indeterminista para el lenguaje de Dijkstra. . 441 16.6. Ejercicios 2... ee eee 443 © ITES-Paraninfo xu indice general 17. Introduccién al A-calculo 451 17.1, Sintaxis del lambda célculo ... . 451 17.2. d-reduccién y 3-reduccién ». 453 17.2.1. Ateorflas 2.1... » 457 17.2, Eta-conversién y extensionalidad » 459 17.2.3, Reducci6n generada por un programa . 460 17.3. Formas normales. Teoremas de Church-Rosser . . 461 17.4. Ordenes de reduccién. Teorema de estandarizacién - 465 17.5. Lambda definibilidad . . a 17.5.1. Operaciones \6gicas 7 17.5.2. Computabilidad . 2... 17.5.3. Puntos fijos y recursi6n 17.5.4. ListasenelAC 22... 2 ee ee eee 17.6. Los sistemas de tipos de Church y de Curry . 17.6.1. Propiedades del sistema \.,Curry . a 17.6.2. La correspondencia de Howard- -Curry- -de Broijn 17.7. Ejemplos practicos de inferencia de tipos 17.7.1. Caso de un Gnico argumento . . 17.7.2. Caso de varios argumentos . 17.7.3. Caso en que aparecen otras variables predefinidas 17.8. Inferencia de tipos en presencia de recursi6n .......--- 17.9. Inferencia de tipos en presencia de patrones 17.10. Reglas elementales para inferencia de tipos : 17.11. El A-cdleulo polimérfico. 2. ee 17.11.1. Inferencia de tipos en presencia de polimorfismo .. . . 17.11.2. Un teorema de parametricidad para funciones polimérficas . . 496 Bibliografia 499 indice alfabético 503 © MTES-Paraninto

You might also like