TEMA 7 EL TEXTO NARRATIVO
•
Superestructura de la narración (van Dijk)
ESTRUCTURA NARRATIVA
HISTORIA MORALEJA
TRAMA
Story Transcript
´ Declarativa – Haskell – Informatica ´ Programacion Sistemas – Curso 2003-2004 ´ Pepe Gallardo – Universidad de Malaga
Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases e Instancias predefinidas La clase Eq La clase Ord Las clases Show y Read Las clases Num y Fractional 7.3 Instancias param´etricas 7.4 Derivaci´on de instancias 7.5 Tipos sobrecargados: Contextos
7.1 Funciones Sobrecargadas X Tienen sentido para algunos tipos, pero no todos X Pueden tener definiciones distintas para cada tipo Ejemplo: Consideremos los tipos
type Lado type Radio ´ type Area data Cuadrado data C´ırculo
= = = = =
Float Float Float UnCuadrado Lado deriving Show UnC´ırculo Radio deriving Show
´ para calcular el area ´ de un Cuadrado : Tiene sentido definir una funcion
´ ´a rea :: Cuadrado → Area ´a rea (UnCuadrado l ) = l ∗ l O para un C´ırculo :
´ ´a rea :: C´ırculo → Area ´a rea (UnC´ırculo r ) = pi ∗ r ∧ 2 ´ ¿ Es el tipo de ´ a rea :: a → Area ? ´ NO, no tiene sentido, p. ej., calcular el area de un Bool
´a rea tiene sentido para los tipos Cuadrado y C´ırculo , pero no para Bool , luego no ´ es polimorfica
´ ´ – Pepe Gallardo – Universidad de Malaga Informatica
7.1
Clases e Instancias X ´a rea tiene sentido para varios tipos pero NO para todos ´ DISTINTA para cada tipo X ´a rea tiene una definicion ´ Sobrecargada ´a rea es un ejemplo de funcion ´ sobrecargada hay que crear una clase (conjunto de En Haskell, para definir funcion ´ tipos que implementan la funcion):
´ class Tiene Area t where ´ ´a rea :: t → Area ´ X Tiene Area es el nombre de la clase (empieza por mayuscula) ´ X t es una variable de tipo que representa los tipos de la clase ´ X El metodo ´a rea solo estara´ definido para los t que pertenezcan a la clase Para incluir un tipo en una clase se realiza una instancia
´ instance Tiene Area Cuadrado where ´a rea (UnCuadrado l ) = l ∗ l ´ instance Tiene Area C´ırculo where ´a rea (UnC´ırculo r ) = pi ∗ r ∧ 2 Uso: ?´ a rea (UnCuadrado 3) ´ 9.0 :: Area ?´ a rea (UnC´ırculo 3) ´ 28.2743 :: Area ?´ a rea True ERROR ...
– – Se usa primera instancia
– – Se usa segunda instancia
– – No existe instancia adecuada
´ ´ – Pepe Gallardo – Universidad de Malaga Informatica
7.2
7.2 Algunas Clases e Instancias predefinidas X Haskell organiza los tipos predefinidos en clases de tipos. Clase: conjunto de tipos para los que tiene sentido una serie de operaciones sobrecargadas.
X Algunas de las clases predefinidas: ¦ Eq tipos que definen igualdad: ( == ) y ( /= ) ¦ Ord tipos que definen un orden: (