SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
Operaciones entre lenguajes
Operaciones entre lenguajesOperaciones entre lenguajes
Operaciones entre lenguajesJean Bernard
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Marta Silvia Tabares
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Diseño de Propuesta de Sistema de Información
Diseño de Propuesta de Sistema de InformaciónDiseño de Propuesta de Sistema de Información
Diseño de Propuesta de Sistema de Informaciónkatherine Gaspare
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del clienteGabriel Mondragón
 
Qué es la ingeniería web
Qué es la ingeniería webQué es la ingeniería web
Qué es la ingeniería webVictor Barraza
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionJosé Antonio Sandoval Acosta
 
Ensayo. Enrutamiento entre las VLAN
Ensayo. Enrutamiento entre las VLANEnsayo. Enrutamiento entre las VLAN
Ensayo. Enrutamiento entre las VLANliras loca
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedioGuillermo
 
Desarrollo de componentes
Desarrollo de componentesDesarrollo de componentes
Desarrollo de componentesdianiktlk
 

La actualidad más candente (20)

1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Operaciones entre lenguajes
Operaciones entre lenguajesOperaciones entre lenguajes
Operaciones entre lenguajes
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Diseño de Propuesta de Sistema de Información
Diseño de Propuesta de Sistema de InformaciónDiseño de Propuesta de Sistema de Información
Diseño de Propuesta de Sistema de Información
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Diagramas de clases
Diagramas de clasesDiagramas de clases
Diagramas de clases
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Qué es la ingeniería web
Qué es la ingeniería webQué es la ingeniería web
Qué es la ingeniería web
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
 
Modelamiento software
Modelamiento softwareModelamiento software
Modelamiento software
 
Ensayo. Enrutamiento entre las VLAN
Ensayo. Enrutamiento entre las VLANEnsayo. Enrutamiento entre las VLAN
Ensayo. Enrutamiento entre las VLAN
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Prueba de Caja Blanca
Prueba de Caja BlancaPrueba de Caja Blanca
Prueba de Caja Blanca
 
Desarrollo de componentes
Desarrollo de componentesDesarrollo de componentes
Desarrollo de componentes
 

Destacado

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
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell José 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
 
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
 

Destacado (13)

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
 
Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en Haskell Tema 6: Definiciones por recursión en Haskell
Tema 6: Definiciones por recursión en 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
 

Similar a 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
 

Similar a 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
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
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
 

Más 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
 

Más 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
 

Último

FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdf
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdfPresentacion minimalista aesthetic simple beige_20240415_224856_0000.pdf
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdfSarayLuciaSnchezFigu
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdfRAMON EUSTAQUIO CARO BAYONA
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docx
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docxIII SEGUNDO CICLO PLAN DE TUTORÍA 2024.docx
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docxMaritza438836
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxFabianValenciaJabo
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 

Último (20)

FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdf
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdfPresentacion minimalista aesthetic simple beige_20240415_224856_0000.pdf
Presentacion minimalista aesthetic simple beige_20240415_224856_0000.pdf
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
recursos naturales america cuarto basico
recursos naturales america cuarto basicorecursos naturales america cuarto basico
recursos naturales america cuarto basico
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docx
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docxIII SEGUNDO CICLO PLAN DE TUTORÍA 2024.docx
III SEGUNDO CICLO PLAN DE TUTORÍA 2024.docx
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.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