SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Linked list in Data Structure and Algorithm
Linked list in Data Structure and Algorithm Linked list in Data Structure and Algorithm
Linked list in Data Structure and Algorithm KristinaBorooah
 
Set data structure 2
Set data structure 2Set data structure 2
Set data structure 2Tech_MX
 
Introduction to numpy Session 1
Introduction to numpy Session 1Introduction to numpy Session 1
Introduction to numpy Session 1Jatin Miglani
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.K Manuel TN
 
Linked List - Insertion & Deletion
Linked List - Insertion & DeletionLinked List - Insertion & Deletion
Linked List - Insertion & DeletionAfaq Mansoor Khan
 
Stack Data Structure
Stack Data StructureStack Data Structure
Stack Data StructureRabin BK
 
pandas - Python Data Analysis
pandas - Python Data Analysispandas - Python Data Analysis
pandas - Python Data AnalysisAndrew Henshaw
 
Arrays in c language
Arrays in c languageArrays in c language
Arrays in c languagetanmaymodi4
 
Array operations
Array operationsArray operations
Array operationsZAFAR444
 
1.4.3 Notación infija, prefija y postfija.pptx
1.4.3 Notación infija, prefija y postfija.pptx1.4.3 Notación infija, prefija y postfija.pptx
1.4.3 Notación infija, prefija y postfija.pptxFernando Solis
 
Manual reportes jsp
Manual reportes jspManual reportes jsp
Manual reportes jspjujuju12
 
Problemas resueltos de c++
Problemas  resueltos de c++Problemas  resueltos de c++
Problemas resueltos de c++johnny herrera
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo ikky2345
 

Was ist angesagt? (20)

Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Linked list in Data Structure and Algorithm
Linked list in Data Structure and Algorithm Linked list in Data Structure and Algorithm
Linked list in Data Structure and Algorithm
 
Set data structure 2
Set data structure 2Set data structure 2
Set data structure 2
 
Introduction to numpy Session 1
Introduction to numpy Session 1Introduction to numpy Session 1
Introduction to numpy Session 1
 
Arboles decision id3
Arboles decision   id3Arboles decision   id3
Arboles decision id3
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.
 
EJERCICIOS DE RECURSIVIDAD EN HASKELL
EJERCICIOS DE RECURSIVIDAD EN HASKELLEJERCICIOS DE RECURSIVIDAD EN HASKELL
EJERCICIOS DE RECURSIVIDAD EN HASKELL
 
Linked List - Insertion & Deletion
Linked List - Insertion & DeletionLinked List - Insertion & Deletion
Linked List - Insertion & Deletion
 
Programa de Pila Estática
Programa de Pila EstáticaPrograma de Pila Estática
Programa de Pila Estática
 
Stack Data Structure
Stack Data StructureStack Data Structure
Stack Data Structure
 
pandas - Python Data Analysis
pandas - Python Data Analysispandas - Python Data Analysis
pandas - Python Data Analysis
 
Arrays in c language
Arrays in c languageArrays in c language
Arrays in c language
 
Array operations
Array operationsArray operations
Array operations
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
1.4.3 Notación infija, prefija y postfija.pptx
1.4.3 Notación infija, prefija y postfija.pptx1.4.3 Notación infija, prefija y postfija.pptx
1.4.3 Notación infija, prefija y postfija.pptx
 
Manual reportes jsp
Manual reportes jspManual reportes jsp
Manual reportes jsp
 
Metodo radix
Metodo radixMetodo radix
Metodo radix
 
Problemas resueltos de c++
Problemas  resueltos de c++Problemas  resueltos de c++
Problemas resueltos de c++
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 

Andere mochten auch

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

Andere mochten auch (12)

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

Ähnlich wie 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
 

Ähnlich wie 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
 
2 algoritmos-1
2 algoritmos-12 algoritmos-1
2 algoritmos-1
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
 
Paralela4
Paralela4Paralela4
Paralela4
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)jlorentemartos
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
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
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
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
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdfEDNAMONICARUIZNIETO
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...MagalyDacostaPea
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...GIANCARLOORDINOLAORD
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Carol Andrea Eraso Guerrero
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 

Kürzlich hochgeladen (20)

Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
Unidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIUUnidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIU
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
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
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx
 
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
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 

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