SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Tema 4: Definición de funciones
          Informática (2011–12)


          José A. Alonso Jiménez

        Grupo de Lógica Computacional
Departamento de Ciencias de la Computación e I.A.
             Universidad de Sevilla
IM Tema 4: Definición de funciones




Tema 4: Definición de funciones
 1. Definiciones por composición
 2. Definiciones con condicionales
 3. Definiciones con ecuaciones con guardas
 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros
 5. Expresiones lambda
 6. Secciones

                                               2 / 24
IM Tema 4: Definición de funciones
  Definiciones por composición




Definiciones por composición
         Decidir si un carácter es un dígito:
                                      Prelude
         isDigit :: Char -> Bool
         isDigit c = c >= '0' && c <= '9'

         Decidir si un entero es par:
                                Prelude
         even :: (Integral a) => a -> Bool
         even n = n `rem` 2 == 0

         Dividir una lista en su n–ésimo elemento:
                                      Prelude
         splitAt :: Int -> [a] -> ([a],[a])
         splitAt n xs = (take n xs, drop n xs)

                                                     3 / 24
IM Tema 4: Definición de funciones
  Definiciones por composición




Definiciones por composición
         Decidir si un carácter es un dígito:
                                      Prelude
         isDigit :: Char -> Bool
         isDigit c = c >= '0' && c <= '9'

         Decidir si un entero es par:
                                Prelude
         even :: (Integral a) => a -> Bool
         even n = n `rem` 2 == 0

         Dividir una lista en su n–ésimo elemento:
                                      Prelude
         splitAt :: Int -> [a] -> ([a],[a])
         splitAt n xs = (take n xs, drop n xs)

                                                     3 / 24
IM Tema 4: Definición de funciones
  Definiciones por composición




Definiciones por composición
         Decidir si un carácter es un dígito:
                                      Prelude
         isDigit :: Char -> Bool
         isDigit c = c >= '0' && c <= '9'

         Decidir si un entero es par:
                                Prelude
         even :: (Integral a) => a -> Bool
         even n = n `rem` 2 == 0

         Dividir una lista en su n–ésimo elemento:
                                      Prelude
         splitAt :: Int -> [a] -> ([a],[a])
         splitAt n xs = (take n xs, drop n xs)

                                                     3 / 24
IM Tema 4: Definición de funciones
  Definiciones por composición




Definiciones por composición
         Decidir si un carácter es un dígito:
                                      Prelude
         isDigit :: Char -> Bool
         isDigit c = c >= '0' && c <= '9'

         Decidir si un entero es par:
                                Prelude
         even :: (Integral a) => a -> Bool
         even n = n `rem` 2 == 0

         Dividir una lista en su n–ésimo elemento:
                                      Prelude
         splitAt :: Int -> [a] -> ([a],[a])
         splitAt n xs = (take n xs, drop n xs)

                                                     3 / 24
IM Tema 4: Definición de funciones
  Definiciones con condicionales




Definiciones con condicionales
         Calcular el valor absoluto (con condicionales):
                                      Prelude
         abs :: Int -> Int
         abs n = if n >= 0 then n else -n

         Calcular el signo de un número (con condicionales anidados):
                                    Prelude
         signum :: Int -> Int
         signum n = if n < 0 then (-1) else
                           if n == 0 then 0 else 1




                                                                        4 / 24
IM Tema 4: Definición de funciones
  Definiciones con condicionales




Definiciones con condicionales
         Calcular el valor absoluto (con condicionales):
                                      Prelude
         abs :: Int -> Int
         abs n = if n >= 0 then n else -n

         Calcular el signo de un número (con condicionales anidados):
                                    Prelude
         signum :: Int -> Int
         signum n = if n < 0 then (-1) else
                           if n == 0 then 0 else 1




                                                                        4 / 24
IM Tema 4: Definición de funciones
  Definiciones con condicionales




Definiciones con condicionales
         Calcular el valor absoluto (con condicionales):
                                      Prelude
         abs :: Int -> Int
         abs n = if n >= 0 then n else -n

         Calcular el signo de un número (con condicionales anidados):
                                    Prelude
         signum :: Int -> Int
         signum n = if n < 0 then (-1) else
                           if n == 0 then 0 else 1




                                                                        4 / 24
IM Tema 4: Definición de funciones
  Definiciones con ecuaciones con guardas




Definiciones con ecuaciones guardadas
         Calcular el valor absoluto (con ecuaciones guardadas):
                                      Prelude
         abs n | n >= 0         = n
                | otherwise = -n

         Calcular el signo de un número (con ecuaciones guardadas):
                                     Prelude
         signum n | n < 0          = -1
                     | n == 0      = 0
                     | otherwise = 1




                                                                      5 / 24
IM Tema 4: Definición de funciones
  Definiciones con ecuaciones con guardas




Definiciones con ecuaciones guardadas
         Calcular el valor absoluto (con ecuaciones guardadas):
                                      Prelude
         abs n | n >= 0         = n
                | otherwise = -n

         Calcular el signo de un número (con ecuaciones guardadas):
                                     Prelude
         signum n | n < 0          = -1
                     | n == 0      = 0
                     | otherwise = 1




                                                                      5 / 24
IM Tema 4: Definición de funciones
  Definiciones con ecuaciones con guardas




Definiciones con ecuaciones guardadas
         Calcular el valor absoluto (con ecuaciones guardadas):
                                      Prelude
         abs n | n >= 0         = n
                | otherwise = -n

         Calcular el signo de un número (con ecuaciones guardadas):
                                     Prelude
         signum n | n < 0          = -1
                     | n == 0      = 0
                     | otherwise = 1




                                                                      5 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Constantes como patrones



Tema 4: Definición de funciones

 1. Definiciones por composición

 2. Definiciones con condicionales

 3. Definiciones con ecuaciones con guardas

 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros

                                               6 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Constantes como patrones



Definiciones con equiparación de patrones: Constantes
         Calcular la negación:
                                             Prelude
         not :: Bool -> Bool
         not True = False
         not False = True

         Calcular la conjunción (con valores):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         True && False = False
         False && True = False
         False && False = False

                                                       7 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Constantes como patrones



Definiciones con equiparación de patrones: Constantes
         Calcular la negación:
                                             Prelude
         not :: Bool -> Bool
         not True = False
         not False = True

         Calcular la conjunción (con valores):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         True && False = False
         False && True = False
         False && False = False

                                                       7 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Constantes como patrones



Definiciones con equiparación de patrones: Constantes
         Calcular la negación:
                                             Prelude
         not :: Bool -> Bool
         not True = False
         not False = True

         Calcular la conjunción (con valores):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         True && False = False
         False && True = False
         False && False = False

                                                       7 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Variables como patrones



Tema 4: Definición de funciones

 1. Definiciones por composición

 2. Definiciones con condicionales

 3. Definiciones con ecuaciones con guardas

 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros

                                               8 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Variables como patrones



Definiciones con equiparación de patrones: Variables
         Calcular la conjunción (con variables anónimas):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         _      && _      = False

         Calcular la conjunción (con variables):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && x = x
         False && _ = False




                                                            9 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Variables como patrones



Definiciones con equiparación de patrones: Variables
         Calcular la conjunción (con variables anónimas):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         _      && _      = False

         Calcular la conjunción (con variables):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && x = x
         False && _ = False




                                                            9 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Variables como patrones



Definiciones con equiparación de patrones: Variables
         Calcular la conjunción (con variables anónimas):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && True = True
         _      && _      = False

         Calcular la conjunción (con variables):
                                     Prelude
         (&&) :: Bool -> Bool -> Bool
         True && x = x
         False && _ = False




                                                            9 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Tuplas como patrones



Tema 4: Definición de funciones

 1. Definiciones por composición

 2. Definiciones con condicionales

 3. Definiciones con ecuaciones con guardas

 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros

                                               10 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Tuplas como patrones



Definiciones con equiparación de patrones: Tuplas
         Calcular el primer elemento de un par:
                                     Prelude
         fst :: (a,b) -> a
         fst (x,_) = x

         Calcular el segundo elemento de un par:
                                    Prelude
         snd :: (a,b) -> b
         snd (_,y) = y




                                                   11 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Tuplas como patrones



Definiciones con equiparación de patrones: Tuplas
         Calcular el primer elemento de un par:
                                     Prelude
         fst :: (a,b) -> a
         fst (x,_) = x

         Calcular el segundo elemento de un par:
                                    Prelude
         snd :: (a,b) -> b
         snd (_,y) = y




                                                   11 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Tuplas como patrones



Definiciones con equiparación de patrones: Tuplas
         Calcular el primer elemento de un par:
                                     Prelude
         fst :: (a,b) -> a
         fst (x,_) = x

         Calcular el segundo elemento de un par:
                                    Prelude
         snd :: (a,b) -> b
         snd (_,y) = y




                                                   11 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Tema 4: Definición de funciones

 1. Definiciones por composición

 2. Definiciones con condicionales

 3. Definiciones con ecuaciones con guardas

 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros

                                               12 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         (test1 xs) se verifica si xs es una lista de 3 caracteres que
         empieza por ’a’.

         test1 :: [Char ] -> Bool
         test1 ['a',_,_] = True
         test1 _         = False
         Construcción de listas con (:)
          [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[]))
         (test2 xs) se verifica si xs es una lista de caracteres que
         empieza por ’a’.

         test2 :: [Char ] -> Bool
         test2 ('a':_) = True
         test2 _       = False
                                                                        13 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         (test1 xs) se verifica si xs es una lista de 3 caracteres que
         empieza por ’a’.

         test1 :: [Char ] -> Bool
         test1 ['a',_,_] = True
         test1 _         = False
         Construcción de listas con (:)
          [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[]))
         (test2 xs) se verifica si xs es una lista de caracteres que
         empieza por ’a’.

         test2 :: [Char ] -> Bool
         test2 ('a':_) = True
         test2 _       = False
                                                                        13 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         (test1 xs) se verifica si xs es una lista de 3 caracteres que
         empieza por ’a’.

         test1 :: [Char ] -> Bool
         test1 ['a',_,_] = True
         test1 _         = False
         Construcción de listas con (:)
          [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[]))
         (test2 xs) se verifica si xs es una lista de caracteres que
         empieza por ’a’.

         test2 :: [Char ] -> Bool
         test2 ('a':_) = True
         test2 _       = False
                                                                        13 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         Decidir si una lista es vacía:
                                             Prelude
         null :: [a] -> Bool
         null []    = True
         null (_:_) = False
         Primer elemento de una lista:
                                     Prelude
         head :: [a] -> a
         head (x:_) = x
         Resto de una lista:
                                             Prelude
         tail :: [a] -> [a]
         tail (_:xs) = xs
                                                       14 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         Decidir si una lista es vacía:
                                             Prelude
         null :: [a] -> Bool
         null []    = True
         null (_:_) = False
         Primer elemento de una lista:
                                     Prelude
         head :: [a] -> a
         head (x:_) = x
         Resto de una lista:
                                             Prelude
         tail :: [a] -> [a]
         tail (_:xs) = xs
                                                       14 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         Decidir si una lista es vacía:
                                             Prelude
         null :: [a] -> Bool
         null []    = True
         null (_:_) = False
         Primer elemento de una lista:
                                     Prelude
         head :: [a] -> a
         head (x:_) = x
         Resto de una lista:
                                             Prelude
         tail :: [a] -> [a]
         tail (_:xs) = xs
                                                       14 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Listas como patrones



Definiciones con equiparación de patrones: Listas
         Decidir si una lista es vacía:
                                             Prelude
         null :: [a] -> Bool
         null []    = True
         null (_:_) = False
         Primer elemento de una lista:
                                     Prelude
         head :: [a] -> a
         head (x:_) = x
         Resto de una lista:
                                             Prelude
         tail :: [a] -> [a]
         tail (_:xs) = xs
                                                       14 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Patrones enteros



Tema 4: Definición de funciones

 1. Definiciones por composición

 2. Definiciones con condicionales

 3. Definiciones con ecuaciones con guardas

 4. Definiciones con equiparación de patrones
      Constantes como patrones
      Variables como patrones
      Tuplas como patrones
      Listas como patrones
      Patrones enteros

                                               15 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Patrones enteros



Definiciones con equiparación de patrones: Enteros
         Predecesor de un número entero:
                                   Prelude
         pred :: Int -> Int
         pred 0       = 0
         pred (n+1) = n

         Comentarios sobre los patrones n+k:
                 n+k sólo se equipara con números mayores o iguales que k
                 Hay que escribirlo entre paréntesis.




                                                                            16 / 24
IM Tema 4: Definición de funciones
  Definiciones con equiparación de patrones
     Patrones enteros



Definiciones con equiparación de patrones: Enteros
         Predecesor de un número entero:
                                   Prelude
         pred :: Int -> Int
         pred 0       = 0
         pred (n+1) = n

         Comentarios sobre los patrones n+k:
                 n+k sólo se equipara con números mayores o iguales que k
                 Hay que escribirlo entre paréntesis.




                                                                            16 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda
         Las funciones pueden construirse sin nombrarlas mediante las
         expresiones lambda.
         Ejemplo de evaluación de expresiones lambda:
          Prelude> (x -> x+x) 3
          6




                                                                        17 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y parcialización
 Uso de las expresiones lambda para resaltar la parcialización:
         (suma x y) es la suma de x e y.
         Definición sin lambda:

         suma x y = x+y

         Definición con lambda:

         suma' = x -> (y -> x+y)




                                                                  18 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y parcialización
 Uso de las expresiones lambda para resaltar la parcialización:
         (suma x y) es la suma de x e y.
         Definición sin lambda:

         suma x y = x+y

         Definición con lambda:

         suma' = x -> (y -> x+y)




                                                                  18 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y parcialización
 Uso de las expresiones lambda para resaltar la parcialización:
         (suma x y) es la suma de x e y.
         Definición sin lambda:

         suma x y = x+y

         Definición con lambda:

         suma' = x -> (y -> x+y)




                                                                  18 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones como resultados
 Uso de las expresiones lambda en funciones como resultados:
         (const x y) es x.
         Definición sin lambda:
                                    Prelude
         const :: a -> b -> a
         const x = x

         Definición con lambda:

         const' :: a -> (b -> a)
         const' x = _ -> x




                                                               19 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones como resultados
 Uso de las expresiones lambda en funciones como resultados:
         (const x y) es x.
         Definición sin lambda:
                                    Prelude
         const :: a -> b -> a
         const x = x

         Definición con lambda:

         const' :: a -> (b -> a)
         const' x = _ -> x




                                                               19 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones como resultados
 Uso de las expresiones lambda en funciones como resultados:
         (const x y) es x.
         Definición sin lambda:
                                    Prelude
         const :: a -> b -> a
         const x = x

         Definición con lambda:

         const' :: a -> (b -> a)
         const' x = _ -> x




                                                               19 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones de sólo un uso
 Uso de las expresiones lambda en funciones con sólo un uso:
         (impares n) es la lista de los n primeros números impares.
         Definición sin lambda:

         impares n = map f [0..n-1]
             where f x = 2*x+1
         Definición con lambda:

         impares' n = map (x -> 2*x+1) [0..n-1]




                                                                      20 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones de sólo un uso
 Uso de las expresiones lambda en funciones con sólo un uso:
         (impares n) es la lista de los n primeros números impares.
         Definición sin lambda:

         impares n = map f [0..n-1]
             where f x = 2*x+1
         Definición con lambda:

         impares' n = map (x -> 2*x+1) [0..n-1]




                                                                      20 / 24
IM Tema 4: Definición de funciones
  Expresiones lambda




Expresiones lambda y funciones de sólo un uso
 Uso de las expresiones lambda en funciones con sólo un uso:
         (impares n) es la lista de los n primeros números impares.
         Definición sin lambda:

         impares n = map f [0..n-1]
             where f x = 2*x+1
         Definición con lambda:

         impares' n = map (x -> 2*x+1) [0..n-1]




                                                                      20 / 24
IM Tema 4: Definición de funciones
  Secciones




Secciones
         Los operadores son las funciones que se escriben entre sus
         argumentos.
         Los operadores pueden convertirse en funciones prefijas
         escribiéndolos entre paréntesis.
         Ejemplo de conversión:
          Prelude> 2 + 3
          5
          Prelude> (+) 2 3
          5
         Ejemplos de secciones:
          Prelude> (2+) 3
          5
          Prelude> (+3) 2
          5
                                                                      21 / 24
IM Tema 4: Definición de funciones
  Secciones




Expresión de secciones mediante lambdas
 Sea * un operador. Entonces
         (*)       = x -> (y -> x*y)
         (x*) = y -> x*y
         (*y) = x -> x*y




                                          22 / 24
IM Tema 4: Definición de funciones
  Secciones




Aplicaciones de secciones
         Uso en definiciones de funciones mediante secciones

         suma'               =   (+)
         siguiente           =   (1+)
         inverso             =   (1/)
         doble               =   (2*)
         mitad               =   (/2)
         Uso en signatura de operadores:
                                    Prelude
         (&&) :: Bool -> Bool -> Bool

         Uso como argumento:
          Prelude> map (2*) [1..5]
          [2,4,6,8,10]
                                                              23 / 24
IM Tema 4: Definición de funciones
  Bibliografía




Bibliografía
    1. R. Bird. Introducción a la programación funcional con Haskell.
       Prentice Hall, 2000.
                 Cap. 1: Conceptos fundamentales.
    2. G. Hutton Programming in Haskell. Cambridge University Press,
       2007.
                 Cap. 4: Defining functions.
    3. B. O’Sullivan, D. Stewart y J. Goerzen Real World Haskell.
       O’Reilly, 2008.
                 Cap. 2: Types and Functions.
    4. B.C. Ruiz, F. Gutiérrez, P. Guerrero y J.E. Gallardo. Razonando
       con Haskell. Thompson, 2004.
                 Cap. 2: Introducción a Haskell.
    5. S. Thompson. Haskell: The Craft of Functional Programming,
       Second Edition. Addison-Wesley, 1999.
                 Cap. 3: Basic types and definitions.
                                                                         24 / 24

Contenu connexe

Tendances

Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosnenyta08
 
Analisis y diseño algoritmos
Analisis y diseño algoritmosAnalisis y diseño algoritmos
Analisis y diseño algoritmosEnrique Y Ch
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datoshugodanielgd
 
Cuadro comparativo de SMBD
Cuadro comparativo de SMBD Cuadro comparativo de SMBD
Cuadro comparativo de SMBD Jazmin Glez.
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicojosecuartas
 
3.2 manejadores de bases de datos
3.2 manejadores de bases de datos3.2 manejadores de bases de datos
3.2 manejadores de bases de datosisraelmillan8
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónManuel Padilla
 
Mdb metodologia para la elicitacion
Mdb metodologia para la elicitacionMdb metodologia para la elicitacion
Mdb metodologia para la elicitacionRene Guaman-Quinche
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Dbms Existentes
Dbms ExistentesDbms Existentes
Dbms Existenteseder8
 

Tendances (20)

1. Modelo de Datos
1. Modelo de Datos1. Modelo de Datos
1. Modelo de Datos
 
Requisitos funcionales
Requisitos funcionalesRequisitos funcionales
Requisitos funcionales
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
Indices tipo arbol b+
Indices tipo arbol b+Indices tipo arbol b+
Indices tipo arbol b+
 
Analisis y diseño algoritmos
Analisis y diseño algoritmosAnalisis y diseño algoritmos
Analisis y diseño algoritmos
 
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datos
 
Cuadro comparativo de SMBD
Cuadro comparativo de SMBD Cuadro comparativo de SMBD
Cuadro comparativo de SMBD
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
3.2 manejadores de bases de datos
3.2 manejadores de bases de datos3.2 manejadores de bases de datos
3.2 manejadores de bases de datos
 
Fundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - IntroducciónFundamentos de Bases de Datos - Introducción
Fundamentos de Bases de Datos - Introducción
 
Mdb metodologia para la elicitacion
Mdb metodologia para la elicitacionMdb metodologia para la elicitacion
Mdb metodologia para la elicitacion
 
Comparacion de SGBD
Comparacion de SGBDComparacion de SGBD
Comparacion de SGBD
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Cuadro comparativo sgbd
Cuadro comparativo sgbdCuadro comparativo sgbd
Cuadro comparativo sgbd
 
Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas Aplicaciones de los lenguajes y autómatas
Aplicaciones de los lenguajes y autómatas
 
Dbms Existentes
Dbms ExistentesDbms Existentes
Dbms Existentes
 

En vedette

Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellAgustin Ramos
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellSoftware Guru
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
Tema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con HaskellTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con HaskellJosé A. Alonso
 
Tema 11: Aplicaciones de la programación funcional con Haskell
Tema 11: Aplicaciones de la programación funcional con HaskellTema 11: Aplicaciones de la programación funcional con Haskell
Tema 11: Aplicaciones de la programación funcional con HaskellJosé A. Alonso
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellJosé A. Alonso
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONALFredy Olaya
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
PARADIGMA LOGICO
PARADIGMA LOGICOPARADIGMA LOGICO
PARADIGMA LOGICOFredy Olaya
 

En vedette (12)

Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Haskell
HaskellHaskell
Haskell
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Intro haskell
Intro haskellIntro haskell
Intro haskell
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
Tema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con HaskellTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell
 
Tema 11: Aplicaciones de la programación funcional con Haskell
Tema 11: Aplicaciones de la programación funcional con HaskellTema 11: Aplicaciones de la programación funcional con Haskell
Tema 11: Aplicaciones de la programación funcional con Haskell
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en Haskell
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONAL
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
PARADIGMA LOGICO
PARADIGMA LOGICOPARADIGMA LOGICO
PARADIGMA LOGICO
 
Haskell - Intro
Haskell - IntroHaskell - Intro
Haskell - Intro
 

Similaire à I1M2011-T4: Definición de funciones en Haskell

Unidad nº1 naturales 1º ciclo básico
Unidad nº1 naturales 1º ciclo básicoUnidad nº1 naturales 1º ciclo básico
Unidad nº1 naturales 1º ciclo básicomatematicacbcolonia
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a MatlabAdiel Castaño
 
Curso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptCurso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptangela80121
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlabCORPOELEC
 
I1M2010-T23: Técnicas de diseño descendente de algoritmos.
I1M2010-T23: Técnicas de diseño descendente de algoritmos.I1M2010-T23: Técnicas de diseño descendente de algoritmos.
I1M2010-T23: Técnicas de diseño descendente de algoritmos.José A. Alonso
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directorjvillon
 
Factorial again! Olimpiada Informática Media IOI- ACM
Factorial again! Olimpiada  Informática Media IOI- ACMFactorial again! Olimpiada  Informática Media IOI- ACM
Factorial again! Olimpiada Informática Media IOI- ACMVictor Aravena
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionSneydert Jhenz
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosJosé A. Alonso
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datossupito01
 

Similaire à I1M2011-T4: Definición de funciones en Haskell (20)

Unidad nº1 naturales 1º ciclo básico
Unidad nº1 naturales 1º ciclo básicoUnidad nº1 naturales 1º ciclo básico
Unidad nº1 naturales 1º ciclo básico
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a Matlab
 
Res vecmat8
Res vecmat8Res vecmat8
Res vecmat8
 
Curso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptCurso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.ppt
 
Resvecmat
ResvecmatResvecmat
Resvecmat
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlab
 
I1M2010-T23: Técnicas de diseño descendente de algoritmos.
I1M2010-T23: Técnicas de diseño descendente de algoritmos.I1M2010-T23: Técnicas de diseño descendente de algoritmos.
I1M2010-T23: Técnicas de diseño descendente de algoritmos.
 
An 04 metodos-directos
An 04 metodos-directosAn 04 metodos-directos
An 04 metodos-directos
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directo
 
Factorial again! Olimpiada Informática Media IOI- ACM
Factorial again! Olimpiada  Informática Media IOI- ACMFactorial again! Olimpiada  Informática Media IOI- ACM
Factorial again! Olimpiada Informática Media IOI- ACM
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmos
 
Tema 1.2
Tema 1.2Tema 1.2
Tema 1.2
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
 
2 algoritmos-1
2 algoritmos-12 algoritmos-1
2 algoritmos-1
 
Paralela4
Paralela4Paralela4
Paralela4
 

Plus de José A. Alonso

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.José A. Alonso
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaJosé A. Alonso
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosJosé A. Alonso
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorJosé A. Alonso
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalJosé A. Alonso
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalJosé A. Alonso
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosJosé A. Alonso
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalJosé A. Alonso
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellJosé A. Alonso
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalJosé A. Alonso
 
LI-T12: LI2011-12: Introducción a la programación lógica con Prolog
LI-T12: LI2011-12: Introducción a la programación lógica con PrologLI-T12: LI2011-12: Introducción a la programación lógica con Prolog
LI-T12: LI2011-12: Introducción a la programación lógica con PrologJosé A. Alonso
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesJosé A. Alonso
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automáticoJosé A. Alonso
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicionalJosé A. Alonso
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellJosé A. Alonso
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenJosé A. Alonso
 
LI2011-T9: Formas normales de Skolem y cláusulas
LI2011-T9: Formas normales de Skolem y cláusulasLI2011-T9: Formas normales de Skolem y cláusulas
LI2011-T9: Formas normales de Skolem y cláusulasJosé A. Alonso
 

Plus de José A. Alonso (20)

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsqueda
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntos
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenador
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicional
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicional
 
LMF-T4: Formas normales
LMF-T4: Formas normalesLMF-T4: Formas normales
LMF-T4: Formas normales
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticos
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicional
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en Haskell
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicional
 
LI-T12: LI2011-12: Introducción a la programación lógica con Prolog
LI-T12: LI2011-12: Introducción a la programación lógica con PrologLI-T12: LI2011-12: Introducción a la programación lógica con Prolog
LI-T12: LI2011-12: Introducción a la programación lógica con Prolog
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer orden
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. Aplicaciones
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automático
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicional
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en Haskell
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer orden
 
LI2011-T9: Formas normales de Skolem y cláusulas
LI2011-T9: Formas normales de Skolem y cláusulasLI2011-T9: Formas normales de Skolem y cláusulas
LI2011-T9: Formas normales de Skolem y cláusulas
 

Dernier

TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...Ars Erótica
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 

Dernier (20)

TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 

I1M2011-T4: Definición de funciones en Haskell

  • 1. Tema 4: Definición de funciones Informática (2011–12) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla
  • 2. IM Tema 4: Definición de funciones Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 5. Expresiones lambda 6. Secciones 2 / 24
  • 3. IM Tema 4: Definición de funciones Definiciones por composición Definiciones por composición Decidir si un carácter es un dígito: Prelude isDigit :: Char -> Bool isDigit c = c >= '0' && c <= '9' Decidir si un entero es par: Prelude even :: (Integral a) => a -> Bool even n = n `rem` 2 == 0 Dividir una lista en su n–ésimo elemento: Prelude splitAt :: Int -> [a] -> ([a],[a]) splitAt n xs = (take n xs, drop n xs) 3 / 24
  • 4. IM Tema 4: Definición de funciones Definiciones por composición Definiciones por composición Decidir si un carácter es un dígito: Prelude isDigit :: Char -> Bool isDigit c = c >= '0' && c <= '9' Decidir si un entero es par: Prelude even :: (Integral a) => a -> Bool even n = n `rem` 2 == 0 Dividir una lista en su n–ésimo elemento: Prelude splitAt :: Int -> [a] -> ([a],[a]) splitAt n xs = (take n xs, drop n xs) 3 / 24
  • 5. IM Tema 4: Definición de funciones Definiciones por composición Definiciones por composición Decidir si un carácter es un dígito: Prelude isDigit :: Char -> Bool isDigit c = c >= '0' && c <= '9' Decidir si un entero es par: Prelude even :: (Integral a) => a -> Bool even n = n `rem` 2 == 0 Dividir una lista en su n–ésimo elemento: Prelude splitAt :: Int -> [a] -> ([a],[a]) splitAt n xs = (take n xs, drop n xs) 3 / 24
  • 6. IM Tema 4: Definición de funciones Definiciones por composición Definiciones por composición Decidir si un carácter es un dígito: Prelude isDigit :: Char -> Bool isDigit c = c >= '0' && c <= '9' Decidir si un entero es par: Prelude even :: (Integral a) => a -> Bool even n = n `rem` 2 == 0 Dividir una lista en su n–ésimo elemento: Prelude splitAt :: Int -> [a] -> ([a],[a]) splitAt n xs = (take n xs, drop n xs) 3 / 24
  • 7. IM Tema 4: Definición de funciones Definiciones con condicionales Definiciones con condicionales Calcular el valor absoluto (con condicionales): Prelude abs :: Int -> Int abs n = if n >= 0 then n else -n Calcular el signo de un número (con condicionales anidados): Prelude signum :: Int -> Int signum n = if n < 0 then (-1) else if n == 0 then 0 else 1 4 / 24
  • 8. IM Tema 4: Definición de funciones Definiciones con condicionales Definiciones con condicionales Calcular el valor absoluto (con condicionales): Prelude abs :: Int -> Int abs n = if n >= 0 then n else -n Calcular el signo de un número (con condicionales anidados): Prelude signum :: Int -> Int signum n = if n < 0 then (-1) else if n == 0 then 0 else 1 4 / 24
  • 9. IM Tema 4: Definición de funciones Definiciones con condicionales Definiciones con condicionales Calcular el valor absoluto (con condicionales): Prelude abs :: Int -> Int abs n = if n >= 0 then n else -n Calcular el signo de un número (con condicionales anidados): Prelude signum :: Int -> Int signum n = if n < 0 then (-1) else if n == 0 then 0 else 1 4 / 24
  • 10. IM Tema 4: Definición de funciones Definiciones con ecuaciones con guardas Definiciones con ecuaciones guardadas Calcular el valor absoluto (con ecuaciones guardadas): Prelude abs n | n >= 0 = n | otherwise = -n Calcular el signo de un número (con ecuaciones guardadas): Prelude signum n | n < 0 = -1 | n == 0 = 0 | otherwise = 1 5 / 24
  • 11. IM Tema 4: Definición de funciones Definiciones con ecuaciones con guardas Definiciones con ecuaciones guardadas Calcular el valor absoluto (con ecuaciones guardadas): Prelude abs n | n >= 0 = n | otherwise = -n Calcular el signo de un número (con ecuaciones guardadas): Prelude signum n | n < 0 = -1 | n == 0 = 0 | otherwise = 1 5 / 24
  • 12. IM Tema 4: Definición de funciones Definiciones con ecuaciones con guardas Definiciones con ecuaciones guardadas Calcular el valor absoluto (con ecuaciones guardadas): Prelude abs n | n >= 0 = n | otherwise = -n Calcular el signo de un número (con ecuaciones guardadas): Prelude signum n | n < 0 = -1 | n == 0 = 0 | otherwise = 1 5 / 24
  • 13. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Constantes como patrones Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 6 / 24
  • 14. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Constantes como patrones Definiciones con equiparación de patrones: Constantes Calcular la negación: Prelude not :: Bool -> Bool not True = False not False = True Calcular la conjunción (con valores): Prelude (&&) :: Bool -> Bool -> Bool True && True = True True && False = False False && True = False False && False = False 7 / 24
  • 15. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Constantes como patrones Definiciones con equiparación de patrones: Constantes Calcular la negación: Prelude not :: Bool -> Bool not True = False not False = True Calcular la conjunción (con valores): Prelude (&&) :: Bool -> Bool -> Bool True && True = True True && False = False False && True = False False && False = False 7 / 24
  • 16. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Constantes como patrones Definiciones con equiparación de patrones: Constantes Calcular la negación: Prelude not :: Bool -> Bool not True = False not False = True Calcular la conjunción (con valores): Prelude (&&) :: Bool -> Bool -> Bool True && True = True True && False = False False && True = False False && False = False 7 / 24
  • 17. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Variables como patrones Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 8 / 24
  • 18. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Variables como patrones Definiciones con equiparación de patrones: Variables Calcular la conjunción (con variables anónimas): Prelude (&&) :: Bool -> Bool -> Bool True && True = True _ && _ = False Calcular la conjunción (con variables): Prelude (&&) :: Bool -> Bool -> Bool True && x = x False && _ = False 9 / 24
  • 19. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Variables como patrones Definiciones con equiparación de patrones: Variables Calcular la conjunción (con variables anónimas): Prelude (&&) :: Bool -> Bool -> Bool True && True = True _ && _ = False Calcular la conjunción (con variables): Prelude (&&) :: Bool -> Bool -> Bool True && x = x False && _ = False 9 / 24
  • 20. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Variables como patrones Definiciones con equiparación de patrones: Variables Calcular la conjunción (con variables anónimas): Prelude (&&) :: Bool -> Bool -> Bool True && True = True _ && _ = False Calcular la conjunción (con variables): Prelude (&&) :: Bool -> Bool -> Bool True && x = x False && _ = False 9 / 24
  • 21. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Tuplas como patrones Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 10 / 24
  • 22. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Tuplas como patrones Definiciones con equiparación de patrones: Tuplas Calcular el primer elemento de un par: Prelude fst :: (a,b) -> a fst (x,_) = x Calcular el segundo elemento de un par: Prelude snd :: (a,b) -> b snd (_,y) = y 11 / 24
  • 23. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Tuplas como patrones Definiciones con equiparación de patrones: Tuplas Calcular el primer elemento de un par: Prelude fst :: (a,b) -> a fst (x,_) = x Calcular el segundo elemento de un par: Prelude snd :: (a,b) -> b snd (_,y) = y 11 / 24
  • 24. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Tuplas como patrones Definiciones con equiparación de patrones: Tuplas Calcular el primer elemento de un par: Prelude fst :: (a,b) -> a fst (x,_) = x Calcular el segundo elemento de un par: Prelude snd :: (a,b) -> b snd (_,y) = y 11 / 24
  • 25. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 12 / 24
  • 26. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas (test1 xs) se verifica si xs es una lista de 3 caracteres que empieza por ’a’. test1 :: [Char ] -> Bool test1 ['a',_,_] = True test1 _ = False Construcción de listas con (:) [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[])) (test2 xs) se verifica si xs es una lista de caracteres que empieza por ’a’. test2 :: [Char ] -> Bool test2 ('a':_) = True test2 _ = False 13 / 24
  • 27. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas (test1 xs) se verifica si xs es una lista de 3 caracteres que empieza por ’a’. test1 :: [Char ] -> Bool test1 ['a',_,_] = True test1 _ = False Construcción de listas con (:) [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[])) (test2 xs) se verifica si xs es una lista de caracteres que empieza por ’a’. test2 :: [Char ] -> Bool test2 ('a':_) = True test2 _ = False 13 / 24
  • 28. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas (test1 xs) se verifica si xs es una lista de 3 caracteres que empieza por ’a’. test1 :: [Char ] -> Bool test1 ['a',_,_] = True test1 _ = False Construcción de listas con (:) [1,2,3] = 1:[2,3] = 1:(2:[3]) = 1:(2:(3:[])) (test2 xs) se verifica si xs es una lista de caracteres que empieza por ’a’. test2 :: [Char ] -> Bool test2 ('a':_) = True test2 _ = False 13 / 24
  • 29. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas Decidir si una lista es vacía: Prelude null :: [a] -> Bool null [] = True null (_:_) = False Primer elemento de una lista: Prelude head :: [a] -> a head (x:_) = x Resto de una lista: Prelude tail :: [a] -> [a] tail (_:xs) = xs 14 / 24
  • 30. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas Decidir si una lista es vacía: Prelude null :: [a] -> Bool null [] = True null (_:_) = False Primer elemento de una lista: Prelude head :: [a] -> a head (x:_) = x Resto de una lista: Prelude tail :: [a] -> [a] tail (_:xs) = xs 14 / 24
  • 31. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas Decidir si una lista es vacía: Prelude null :: [a] -> Bool null [] = True null (_:_) = False Primer elemento de una lista: Prelude head :: [a] -> a head (x:_) = x Resto de una lista: Prelude tail :: [a] -> [a] tail (_:xs) = xs 14 / 24
  • 32. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Listas como patrones Definiciones con equiparación de patrones: Listas Decidir si una lista es vacía: Prelude null :: [a] -> Bool null [] = True null (_:_) = False Primer elemento de una lista: Prelude head :: [a] -> a head (x:_) = x Resto de una lista: Prelude tail :: [a] -> [a] tail (_:xs) = xs 14 / 24
  • 33. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Patrones enteros Tema 4: Definición de funciones 1. Definiciones por composición 2. Definiciones con condicionales 3. Definiciones con ecuaciones con guardas 4. Definiciones con equiparación de patrones Constantes como patrones Variables como patrones Tuplas como patrones Listas como patrones Patrones enteros 15 / 24
  • 34. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Patrones enteros Definiciones con equiparación de patrones: Enteros Predecesor de un número entero: Prelude pred :: Int -> Int pred 0 = 0 pred (n+1) = n Comentarios sobre los patrones n+k: n+k sólo se equipara con números mayores o iguales que k Hay que escribirlo entre paréntesis. 16 / 24
  • 35. IM Tema 4: Definición de funciones Definiciones con equiparación de patrones Patrones enteros Definiciones con equiparación de patrones: Enteros Predecesor de un número entero: Prelude pred :: Int -> Int pred 0 = 0 pred (n+1) = n Comentarios sobre los patrones n+k: n+k sólo se equipara con números mayores o iguales que k Hay que escribirlo entre paréntesis. 16 / 24
  • 36. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda Las funciones pueden construirse sin nombrarlas mediante las expresiones lambda. Ejemplo de evaluación de expresiones lambda: Prelude> (x -> x+x) 3 6 17 / 24
  • 37. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y parcialización Uso de las expresiones lambda para resaltar la parcialización: (suma x y) es la suma de x e y. Definición sin lambda: suma x y = x+y Definición con lambda: suma' = x -> (y -> x+y) 18 / 24
  • 38. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y parcialización Uso de las expresiones lambda para resaltar la parcialización: (suma x y) es la suma de x e y. Definición sin lambda: suma x y = x+y Definición con lambda: suma' = x -> (y -> x+y) 18 / 24
  • 39. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y parcialización Uso de las expresiones lambda para resaltar la parcialización: (suma x y) es la suma de x e y. Definición sin lambda: suma x y = x+y Definición con lambda: suma' = x -> (y -> x+y) 18 / 24
  • 40. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones como resultados Uso de las expresiones lambda en funciones como resultados: (const x y) es x. Definición sin lambda: Prelude const :: a -> b -> a const x = x Definición con lambda: const' :: a -> (b -> a) const' x = _ -> x 19 / 24
  • 41. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones como resultados Uso de las expresiones lambda en funciones como resultados: (const x y) es x. Definición sin lambda: Prelude const :: a -> b -> a const x = x Definición con lambda: const' :: a -> (b -> a) const' x = _ -> x 19 / 24
  • 42. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones como resultados Uso de las expresiones lambda en funciones como resultados: (const x y) es x. Definición sin lambda: Prelude const :: a -> b -> a const x = x Definición con lambda: const' :: a -> (b -> a) const' x = _ -> x 19 / 24
  • 43. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones de sólo un uso Uso de las expresiones lambda en funciones con sólo un uso: (impares n) es la lista de los n primeros números impares. Definición sin lambda: impares n = map f [0..n-1] where f x = 2*x+1 Definición con lambda: impares' n = map (x -> 2*x+1) [0..n-1] 20 / 24
  • 44. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones de sólo un uso Uso de las expresiones lambda en funciones con sólo un uso: (impares n) es la lista de los n primeros números impares. Definición sin lambda: impares n = map f [0..n-1] where f x = 2*x+1 Definición con lambda: impares' n = map (x -> 2*x+1) [0..n-1] 20 / 24
  • 45. IM Tema 4: Definición de funciones Expresiones lambda Expresiones lambda y funciones de sólo un uso Uso de las expresiones lambda en funciones con sólo un uso: (impares n) es la lista de los n primeros números impares. Definición sin lambda: impares n = map f [0..n-1] where f x = 2*x+1 Definición con lambda: impares' n = map (x -> 2*x+1) [0..n-1] 20 / 24
  • 46. IM Tema 4: Definición de funciones Secciones Secciones Los operadores son las funciones que se escriben entre sus argumentos. Los operadores pueden convertirse en funciones prefijas escribiéndolos entre paréntesis. Ejemplo de conversión: Prelude> 2 + 3 5 Prelude> (+) 2 3 5 Ejemplos de secciones: Prelude> (2+) 3 5 Prelude> (+3) 2 5 21 / 24
  • 47. IM Tema 4: Definición de funciones Secciones Expresión de secciones mediante lambdas Sea * un operador. Entonces (*) = x -> (y -> x*y) (x*) = y -> x*y (*y) = x -> x*y 22 / 24
  • 48. IM Tema 4: Definición de funciones Secciones Aplicaciones de secciones Uso en definiciones de funciones mediante secciones suma' = (+) siguiente = (1+) inverso = (1/) doble = (2*) mitad = (/2) Uso en signatura de operadores: Prelude (&&) :: Bool -> Bool -> Bool Uso como argumento: Prelude> map (2*) [1..5] [2,4,6,8,10] 23 / 24
  • 49. IM Tema 4: Definición de funciones Bibliografía Bibliografía 1. R. Bird. Introducción a la programación funcional con Haskell. Prentice Hall, 2000. Cap. 1: Conceptos fundamentales. 2. G. Hutton Programming in Haskell. Cambridge University Press, 2007. Cap. 4: Defining functions. 3. B. O’Sullivan, D. Stewart y J. Goerzen Real World Haskell. O’Reilly, 2008. Cap. 2: Types and Functions. 4. B.C. Ruiz, F. Gutiérrez, P. Guerrero y J.E. Gallardo. Razonando con Haskell. Thompson, 2004. Cap. 2: Introducción a Haskell. 5. S. Thompson. Haskell: The Craft of Functional Programming, Second Edition. Addison-Wesley, 1999. Cap. 3: Basic types and definitions. 24 / 24