Publicado el 22 de Marzo del 2020
1.068 visualizaciones desde el 22 de Marzo del 2020
193,2 KB
46 paginas
Creado hace 10a (05/09/2014)
Tema 4: Definición de funciones
Informática (2014–15)
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
5. Expresiones lambda
6. Secciones
2 / 22
IM Tema 4: Definición de funciones
Definiciones por composición
Definiciones por composición
Decidir si un carácter es un dígito:
isDigit :: Char -> Bool
isDigit c = c >= '0' && c <= '9'
Prelude
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:
splitAt :: Int -> [a] -> ([a],[a])
splitAt n xs = (take n xs, drop n xs)
Prelude
3 / 22
IM Tema 4: Definición de funciones
Definiciones por composición
Definiciones por composición
Decidir si un carácter es un dígito:
isDigit :: Char -> Bool
isDigit c = c >= '0' && c <= '9'
Prelude
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:
splitAt :: Int -> [a] -> ([a],[a])
splitAt n xs = (take n xs, drop n xs)
Prelude
3 / 22
IM Tema 4: Definición de funciones
Definiciones por composición
Definiciones por composición
Decidir si un carácter es un dígito:
isDigit :: Char -> Bool
isDigit c = c >= '0' && c <= '9'
Prelude
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:
splitAt :: Int -> [a] -> ([a],[a])
splitAt n xs = (take n xs, drop n xs)
Prelude
3 / 22
IM Tema 4: Definición de funciones
Definiciones por composición
Definiciones por composición
Decidir si un carácter es un dígito:
isDigit :: Char -> Bool
isDigit c = c >= '0' && c <= '9'
Prelude
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:
splitAt :: Int -> [a] -> ([a],[a])
splitAt n xs = (take n xs, drop n xs)
Prelude
3 / 22
IM Tema 4: Definición de funciones
Definiciones con condicionales
Definiciones con condicionales
Calcular el valor absoluto (con condicionales):
abs :: Int -> Int
abs n = if n >= 0 then n else -n
Prelude
Calcular el signo de un número (con condicionales anidados):
signum :: Int -> Int
signum n = if n < 0 then (-1) else
Prelude
if n == 0 then 0 else 1
4 / 22
IM Tema 4: Definición de funciones
Definiciones con condicionales
Definiciones con condicionales
Calcular el valor absoluto (con condicionales):
abs :: Int -> Int
abs n = if n >= 0 then n else -n
Prelude
Calcular el signo de un número (con condicionales anidados):
signum :: Int -> Int
signum n = if n < 0 then (-1) else
Prelude
if n == 0 then 0 else 1
4 / 22
IM Tema 4: Definición de funciones
Definiciones con condicionales
Definiciones con condicionales
Calcular el valor absoluto (con condicionales):
abs :: Int -> Int
abs n = if n >= 0 then n else -n
Prelude
Calcular el signo de un número (con condicionales anidados):
signum :: Int -> Int
signum n = if n < 0 then (-1) else
Prelude
if n == 0 then 0 else 1
4 / 22
IM Tema 4: Definición de funciones
Definiciones con ecuaciones con guardas
Definiciones con ecuaciones guardadas
Calcular el valor absoluto (con ecuaciones guardadas):
abs n | n >= 0
= n
| otherwise = -n
Prelude
Calcular el signo de un número (con ecuaciones guardadas):
Prelude
signum n | n < 0
= -1
| n == 0
= 0
| otherwise = 1
5 / 22
IM Tema 4: Definición de funciones
Definiciones con ecuaciones con guardas
Definiciones con ecuaciones guardadas
Calcular el valor absoluto (con ecuaciones guardadas):
abs n | n >= 0
= n
| otherwise = -n
Prelude
Calcular el signo de un número (con ecuaciones guardadas):
Prelude
signum n | n < 0
= -1
| n == 0
= 0
| otherwise = 1
5 / 22
IM Tema 4: Definición de funciones
Definiciones con ecuaciones con guardas
Definiciones con ecuaciones guardadas
Calcular el valor absoluto (con ecuaciones guardadas):
abs n | n >= 0
= n
| otherwise = -n
Prelude
Calcular el signo de un número (con ecuaciones guardadas):
Prelude
signum n | n < 0
= -1
| n == 0
= 0
| otherwise = 1
5 / 22
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
5. Expresiones lambda
6 / 22
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:
not :: Bool -> Bool
not True =
not False =
False
True
Prelude
Calcular la conjunción (con valores):
Prelude
(&&) :: Bool -> Bool -> Bool
True && True = True
True && False = False
False && True
= False
False && False = False
7 / 22
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:
not :: Bool -> Bool
not True =
not False =
False
True
Prelude
Calcular la conjunción (con valores):
Prelude
(&&) :: Bool -> Bool -> Bool
True && True = True
True && False = False
False && True
= False
False && False = False
7 / 22
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:
not :: Bool -> Bool
not True =
not False =
False
True
Prelude
Calcular la conjunción (con valores):
Prelude
(&&) :: Bool -> Bool -> Bool
True && True = True
True && False = False
False && True
= False
False && False = False
7 / 22
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
5. Expresiones lambda
8 / 22
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 / 22
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 / 22
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 / 22
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
5. Expresiones lambda
10 / 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 / 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 / 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 / 22
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
5. Expresiones lambda
12 / 22
IM Tema 4: Definición de funciones
Definiciones con equiparación de patrones
Listas como patrones
Definiciones con equiparació
Comentarios de: Tema 4: Definición de funciones (0)
No hay comentarios