Introduccion al paradigma funcional
¿Y qué es una función?
x
f(x)
En el sentido matemático, una función implica que un hecho depende de otro.
F(x) = y = log x, implica que elvalor de y depende del logaritmo x (está “en función de”).
Entonces, un programa según el Paradigma Funcional será una función, una transformación de un input en
un output…
Programa
funcionalEl output dependerá del input que se ingrese.
La metáfora asociada al paradigma funcional es la calculadora
Esto, ¿es una función?
No, porque para cada x sólo puede haber un y posible.Matemáticamente: para cada elemento del dominio
puede haber una sola imagen:
Programación funcional – Módulo 1
Veamos un ejemplo en pseudocódigo:
Program Prueba;
var
flag: BOOLEAN;
function f (n:INTEGER): INTEGER;
begin
flag
NOT flag;
if flag then
↑ n;
else
↑ 2 * n;
endif
end;
Comentarios
↑ return / devuelve un valor
asignación de un valor o expresión a
una variable
¿Quépasa cuando pruebo?
--- Programa Principal
begin
flag
true;
...
write( f(1) );
Z
en Haskell Int->Int
en matemático era
esto quiere decir que desde Haskell vemos a los conjuntos que definenla función como a un tipo de dato. Por
eso decimos que la función tiene un tipo y es parte característica de ella. En particular el tipo de doble es:
Main> :t doble
doble::Int->Int
4Programación funcional – Módulo 1
Aclaración importante: no es necesario definir el tipo de mi función en Haskell dado que el motor sabe inferir
éstos a partir de la implementación que nosotroshagamos. Por ende también es válido definir la función
doble como:
doble x = 2 * x
2*x
el operador (*) tiene que poder aplicarse sobre 2 y sobre x. Como 2 es un número, está todo bien si x
es tambiénun número. Si x es un String no lo puedo multiplicar por dos, el operador (*) no es válido si el tipo
de x no es el correcto. ¿Quién hace este chequeo? El compilador.
Tres tipos de chequeo que el...
Regístrate para leer el documento completo.