SlideShare una empresa de Scribd logo
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

Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
Gabriel Mondragón
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
Zamantha Gonzalez Universidad Nacional Abierta
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSLUIS5111987
 
Grafos 0
Grafos 0Grafos 0
Grafos 0
brisarosales
 
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓN
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓNORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓN
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓNstandarman
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
Alvaro Enrique Ruano
 
Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014
Dario Esquina
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.pptLeydi Hernandez
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en Haskell
José A. Alonso
 
Tutorial de MySQL
Tutorial de MySQLTutorial de MySQL
Tutorial de MySQL
Estephania Villarreal
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
Pilas en Java
Pilas en JavaPilas en Java
Pilas en Java
VICTOR VIERA BALANTA
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
José Antonio Sandoval Acosta
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
DĴäîřo Lêmä
 
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
José A. Alonso
 
Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysql
ROQUE Caldas Dominguez
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacionalomarzon
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
Infomania pro
 

La actualidad más candente (20)

Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOS
 
Grafos 0
Grafos 0Grafos 0
Grafos 0
 
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓN
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓNORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓN
ORGANIZACIONES NACIONALES E INTERNACIONALES DE ESTANDARIZACIÓN
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014Ejercicios packet tracer_completo_2014
Ejercicios packet tracer_completo_2014
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
 
Tema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en HaskellTema 9: Declaraciones de tipos y clases en Haskell
Tema 9: Declaraciones de tipos y clases en Haskell
 
Tutorial de MySQL
Tutorial de MySQLTutorial de MySQL
Tutorial de MySQL
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Pilas en Java
Pilas en JavaPilas en Java
Pilas en Java
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
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
 
Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysql
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 

Destacado

Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
Agustin Ramos
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
Software Guru
 
Intro haskell
Intro haskellIntro 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 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 Haskell
José 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 Haskell
José A. Alonso
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONAL
Fredy 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 LOGICO
Fredy Olaya
 
Haskell - Intro
Haskell - IntroHaskell - Intro

Destacado (11)

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
 
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 Matlab
Adiel Castaño
 
Res vecmat8
Res vecmat8Res vecmat8
Curso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptCurso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.ppt
angela80121
 
Resvecmat
ResvecmatResvecmat
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
 
An 04 metodos-directos
An 04 metodos-directosAn 04 metodos-directos
An 04 metodos-directos
Romelmasterdjj Jovys
 
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- ACM
Victor Aravena
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
Sneydert Jhenz
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
nomegustaestascosas
 
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
José A. Alonso
 
Tema 1.2
Tema 1.2Tema 1.2
Tema 1.2
Anell Aguilar
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
supito01
 
Paralela4
Paralela4Paralela4
Paralela4
Abraham Zamudio
 

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
 
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
 
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úsqueda
José 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 conjuntos
José 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 ordenador
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
 
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
José 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 Haskell
José 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 proposicional
José 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. Aplicaciones
José 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 Haskell
José 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 orden
José 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áusulas
José 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

Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Monseespinoza6
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
DIANADIAZSILVA1
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
LorenaCovarrubias12
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
BetzabePecheSalcedo1
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
cintiat3400
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
auxsoporte
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
SandraPiza2
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
TatianaVanessaAltami
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
FelixCamachoGuzman
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
https://gramadal.wordpress.com/
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Demetrio Ccesa Rayme
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
sandradianelly
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
rosannatasaycoyactay
 

Último (20)

Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
Productos contestatos de la Séptima sesión ordinaria de CTE y TIFC para Docen...
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIACONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
CONCLUSIONES-DESCRIPTIVAS NIVEL PRIMARIA
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
3° UNIDAD 3 CUIDAMOS EL AMBIENTE RECICLANDO EN FAMILIA 933623393 PROF YESSENI...
 

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