Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin a la programacin
funcional
Contenido
1.1. Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2. Nmero de combinaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Comprobacin de nmero impar . . . . . . . . . . . . . . . . . . . . . . . 14
1.4. Cuadrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5. Suma de cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6. Raices de ecuaciones de segundo grado . . . . . . . . . . . . . . . . . . . 17
1.7. Valor absoluto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.8. Signo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.9. Conjuncin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.10. Anterior de un nmero natural . . . . . . . . . . . . . . . . . . . . . . . . 19
1.11. Potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.12. Funcin identidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.1.
Factorial
Ejercicio 1.1. Definir la funcin factorial tal que factorial n es el factorial de n. Por
ejemplo,
factorial 4 ;24
Solucin: Vamos a presentar distintas definiciones.
11
12
fact2
fact2
|
|
fact4
fact4
|
|
13
factorial = fact5
1.2.
Nmero de combinaciones
Ejercicio 1.2. Definir la funcin comb tal que comb n k es el nmero de combinaciones de n
elementos tomados de k en k; es decir,
n
n!
=
m
k! (n k )!
Por ejemplo.
comb 6 2 ; 15
Solucin:
14
1.3.
Ejercicio 1.3. Definir la funcin impar tal que impar x se verifica si el nmero x es impar. Por
ejemplo,
impar 7
impar 6
;
;
True
False
x
(-x)
False
True
impar4_aux n
1.4. Cuadrado
1.4.
15
Cuadrado
Ejercicio 1.4. Definir la funcin cuadrado tal que cuadrado x es el cuadrado del nmero x.
Por ejemplo,
cuadrado 3
cuadrado = cuadrado_1
Las definiciones son equivalentes:
16
1.5.
Suma de cuadrados
suma_de_cuadrados [1,2,3]
14
1.6.
17
Ejercicio 1.6. Definir la funcin raices tal que raices a b c es la lista de las raices de la
ecuacin ax2 + bc + c = 0. Por ejemplo,
raices 1 3 2
[-1.0,-2.0]
Main> :set +s
Main> raices_1 1
[-1.0,-2.0]
(134 reductions,
Main> raices_2 1
[-1.0,-2.0]
(104 reductions,
1.7.
3 2
242 cells)
3 2
183 cells)
Valor absoluto
Ejercicio 1.7. Redefinir la funcin abs tal que abs x es el valor absoluto de x. Por ejemplo,
abs (-3) ; 3
abs 3
; 3
Solucin: Presentamos distintas definiciones:
1. Con condicionales:
18
1.8.
Signo
Ejercicio 1.8. Redefinir la funcin signum tal que signum x es -1 si x es negativo, 0 si x es cero
y 1 si x es positivo. Por ejemplo,
signum 7
; 1
signum 0
; 0
signum (-4) ; -1
Solucin:
n_signum x | x > 0
= 1
| x == 0
= 0
| otherwise = -1
Las definiciones son equivalentes:
1.9. Conjuncin
1.9.
19
Conjuncin
Ejercicio 1.9. Redefinir la funcin && tal que x && y es la conjuncin de x e y Por ejemplo,
prop_equivalencia x y =
(x &&& y) == (x && y)
Comprobacin
1.10.
Ejercicio 1.10. Definir la funcin anterior tal que anterior x es el anterior del nmero
natural x. Por ejemplo,
anterior 3 ; 2
anterior 0 ; Program error: pattern match failure: anterior 0
Solucin: Presentamos distintas definiciones:
1. Con patrones:
20
1.11.
Potencia
Ejercicio 1.11. Redefinir la funcin potencia tal que potencia x y es x y . Por ejemplo,
potencia 2 4
; 16
potencia 3.1 2 ; 9.61
Solucin: Presentamos distintas definiciones:
1. Por patrones:
prop_equivalencia
prop_equivalencia
n >= 0 ==>
(potencia_1 x
potencia_2 x
potencia_3 x
Comprobacin
1.12.
Funcin identidad
id 3 ; 3
Solucin: La definicin es
n_id :: a -> a
n_id x = x
21