Post on 20-Jan-2016
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
PLYFUNIDAD 1. Conceptos
FundamentalesEnero-Junio 2014
MTI. Rosa Imelda García Chi
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
1.4 DISCIPLINA DE TIPOSPROGRAMACIÓN LÓGICA FUNCIONAL
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
1.4. Disciplina de Tipos
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Propósito de la disciplina de tipos
• En los lenguajes de programación con disciplina de tipos, cada tipo representa una colección de valores (datos) similares.
• Una función cuyo tipo sea A1->…An->R espera n parámetros 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 ejecución
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Haskell y otros
lenguajes funcionales utilizan el
sistema de tipos de
Milner que tienen dos
características
fundamentales:
• Disciplina estática de Tipos
• Polimorfismo
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Disciplina estática de Tipos
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Polimorfismo
Un programa bien tipado puede incluir definiciones de funciones
polimórficas.
El polimorfismo permite que una misma función se pueda aplicar a parámetros de diferentes tipos,
dependiendo del contexto en el quela función se utilice.
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Inferencia de tipos
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
El ejemplo motiva que al formular reglas de inferencia de tipos es necesario indicar explícitamente (por medio de una cuantificación universal) aquellos parámetros de un tipo que se pueden particularizar reemplazándolos por tipos concretos cualesquiera.
Con esta motivación, se distinguirá entre los tipos simples y los tipos genéricos que incluyen parámetros cuantificados universalmente.
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Tipos simples y genéricos
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Reglas de inferencias de Tipos
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Ahora ya se pueden formular las reglas de inferencia de tipos.
Cada una de ellas va a ser de la forma
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Uso de las reglas de inferencia de tipos
A continuación, se muestran algunos ejemplos de inferencia de tipos.En cada caso se trata de demostrar una afirmación de la forma en varios pasos, utilizando las reglas que acabamos de formular.Los dos primeros ejemplos ilustran el uso de las reglas más básicas
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Tipo principal de una expresión
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Intuitivamente, el primero de los tres tipos anteriores es más general que los otros dos.
Para precisar cuando se considera que un tipo es más general que otro, damos las siguiente definición:
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Clases de tipos y tipos cualificados
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Declaraciones de clase y de ejemplar
• Las clases de tipos se definen mediante declaraciones de clase, de la forma:
• Class CL a where
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Subclase y herencia
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Ejemplos de uso de tipos cualificados
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Los ejemplos muestran que un tipo cualificado puede tener algunos parámetros completamente genéricos y
otros restringidos de manera que solo se pueden sustituir por ejemplares de ciertas clases de tipos.
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
Algunas clases de tipos predefinidos en Haskell
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
MTI. Rosa Imelda García ChiProgramación Lógica y Funcional
¡Por su atención gracias!