Vous êtes sur la page 1sur 59

PLYF UNIDAD 1.

Conceptos Fundamentales
Enero-Junio 2014 MTI. Rosa Imelda Garca Chi
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

PROGRAMACIN LGICA FUNCIONAL

1.4 DISCIPLINA DE TIPOS

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

1.4. Disciplina de Tipos

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Propsito de la disciplina de tipos


En los lenguajes de programacin con disciplina de tipos, cada tipo representa una coleccin de valores (datos) similares. Una funcin cuyo tipo sea A1->An->R espera n parmetros con tipos A1,,An y devuelve un resultado de tipo R. El conocer los tipos de las funciones ayuda a documentar los programas y a evitar errores en tiempo de ejecucin
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Haskell y otros lenguajes funcionales utilizan el sistema de tipos de Milner que tienen dos caractersticas fundamentales:

Disciplina esttica de Tipos Polimorfismo

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Disciplina esttica de Tipos

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Polimorfismo
Un programa bien tipado puede incluir definiciones de funciones polimrficas.
El polimorfismo permite que una misma funcin se pueda aplicar a parmetros de diferentes tipos, dependiendo del contexto en el quela funcin se utilice.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Inferencia de tipos

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

El ejemplo motiva que al formular reglas de inferencia de tipos es necesario indicar explcitamente (por medio de una cuantificacin universal) aquellos parmetros de un tipo que se pueden particularizar reemplazndolos por tipos concretos cualesquiera.

Con esta motivacin, se distinguir entre los tipos simples y los tipos genricos que incluyen parmetros cuantificados universalmente.

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Tipos simples y genricos

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Reglas de inferencias de Tipos

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Ahora ya se pueden formular las reglas de inferencia de tipos.

Cada una de ellas va a ser de la forma

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Uso de las reglas de inferencia de tipos


A continuacin, se muestran algunos ejemplos de inferencia de tipos. En cada caso se trata de demostrar una afirmacin de la forma en varios pasos, utilizando las reglas que acabamos de formular. Los dos primeros ejemplos ilustran el uso de las reglas ms bsicas
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Tipo principal de una expresin

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Intuitivamente, el primero de los tres tipos anteriores es ms general que los otros dos. Para precisar cuando se considera que un tipo es ms general que otro, damos las siguiente definicin:

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Clases de tipos y tipos cualificados

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Declaraciones de clase y de ejemplar


Las clases de tipos se definen mediante declaraciones de clase, de la forma: Class CL a where

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Subclase y herencia

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Ejemplos de uso de tipos cualificados

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Los ejemplos muestran que un tipo cualificado puede tener algunos parmetros completamente genricos y otros restringidos de manera que solo se pueden sustituir por ejemplares de ciertas clases de tipos.

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Algunas clases de tipos predefinidos en Haskell

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Por su atencin gracias!

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Vous aimerez peut-être aussi