110 likes | 309 Views
Constructores de tipos abstractos de datos. T A D : Módulos. Los módulos proporcionan la única manera de construir tipos abstractos de datos (TAD) en Haskell . T A D : Módulos.
E N D
T A D : Módulos Los módulos proporcionan la única manera de construir tipos abstractos de datos (TAD) en Haskell.
T A D : Módulos • La característica principal de los TADs es que la representación de los tipos se oculta; todas las operaciones de los TADs son hechas a un nivel abstracto el cual no depende de la representación. • Los módulos se utilizan para ahorrar tiempo al programador, ya que al tener un modulo, solo basta importar el modulo y trabajar con este código.
T A D : Módulos • Ejemplo: • En el Modulo declaramos: • module Ce (nose) where • nose ::String • nose= "Hola Gato"
T A D : Módulos • En la función principal declaramos: • module Main where • import Ce • uno::String • uno =nose
T A D : Módulos En este ejemplo: La función principal importa el moduloCe que esta implementado escribir “Hola Gato”. En la función principal se llama a la función “uno” luego “uno” llama a la función “nose” la que está ubicada en el modulo Ce y de esa forma ejecuta “nose” que imprime “Hola Gato”
Listas • Si a es un tipo cualquiera, entonces [a] representa el tipo de listas cuyos elementos son valores de tipo a. • Hay varias formas de escribir expresiones de listas: • La forma más simple es la lista vacía, representada mediante [].
Listas • Las listas no vacías pueden ser construidas enunciando explícitamente sus elementos (por ejemplo, [1,3,10]) o añadiendo un elemento al principio de otra lista utilizando el operador de construcción (:). Estas notaciones son equivalentes: [1,3,10] = 1:[3,10] = 1:(3:[10]) = 1:(3:(10:[]))
Listas • El operador (:) es asociativo a la derecha, de forma que 1:3:10:[] equivale a (1:(3:(10:[]))), una lista cuyo primer elemento es 1, el segundo 3 y el último 10. • Todos los elementos de una lista deben ser del mismo tipo. La expresión ['a',2,False] no está permitida en Haskell
Listas • El standarprelude incluye un amplio conjunto de funciones de manejo de listas • Por ejemplo: • lengthxs devuelve el número de elementos de xs ? length [1,3,10] 3
Listas • xs ++ ys devuelve la lista resultante de concatenar xs e ys ? [1,3,10] ++ [2,6,5,7] [1, 3, 10, 2, 6, 5, 7] • concatxss devuelve la lista resultante de concatenar las listas de xss ? concat [[1], [2,3], [], [4,5,6]] [1, 2, 3, 4, 5, 6]