Unidad 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 35

2.1.

Introducción al modelo de
programación funcional
2.2 Tipo de datos
2.3 Funciones
2.4 Intervalos
2.5 Operadores
2.6 Aplicaciones de listas
2.7 Árboles
2.8 Evaluación perezosa
Introducción al modelo de
programación funcional.
El paradigma funcional está basado en el modelo
matemático de composición funcional. Utiliza funciones
matemáticas puras sin asignaciones destructivas y sin
efecto de lado. (Transforma datos de entrada en un
resultado).

Se caracteriza por el uso de expresiones y funciones,


una función puede invocar a otra, o el resultado de una
función puede ser usado como argumento de otra
función.
 Los programas son más fáciles de diseñar,
de escribir y de mantener, pero dan al
programador menos posibilidades de
control sobre la máquina.
Campo de aplicación
 Los lenguajes funcionales se pensaron
como de uso universal para el
procesamiento de datos en todo tipo de
aplicaciones.

 Principalmente en Investigación Científica


y aplicaciones matemáticas.
Ventajas
 Utiliza los principios de inducción
matemática y razonamiento algebraico
 Ausencia de efectos colaterales
(eliminación de iteraciones imprevistas)
 Enfoque modular
 Tiempos de desarrollo cortos
 Código pequeño y fácil de modificar y
reusar
Características de la programación
funcional
 Recursividad
 Funciones como tipos de
datos primitivos
 Transparencia referencial
 Uso de listas
 Evaluación perezosa
Recursividad
 Proceso mediante el que una función se
llama a sí misma de forma repetida, hasta
que se satisface alguna determinada
condición.

 Condiciones para cumplir recursividad:


1. Que se llame a la función o al código más
de una ocasión
2. Que exista una condición de finalización.
Función
 Es una aplicación que toma uno o más
argumentos y devuelve un valor
Transparencia Referencial
Permite que el valor que
devuelve una función esté
únicamente determinado por el
valor de sus argumentos
consiguiendo que una misma
expresión tenga siempre el
mismo valor.
Inferencia de tipos
 Consiste en que el sistema contiene un
mecanismo que infiere el tipo de dato de las
expresiones, por lo que no es obligatoria la
declaración del prototipo de las funciones.

 Ejemplo:

traduce True=“verdadero”
traduce False=“falso”

El sistema infiere automáticamente que el tipo es

traduce:: Bool  String


 Una función se identifica con un nombre único
 El alcance de los conjuntos DOMINIO e
IMAGEN
◦ f :: UnTipo -> OtroTipo
◦ f expresion1 = expresion2
◦ f expresion3 = expresion4

◦ calcular:: Int -> Int


◦ calcular 0 = 1
◦ calcular 1 = 1
◦ calcular 2 = 4
◦ calcular 3 = 10
calcular 2
Cuál sería el resultado?

 f :: Float –> Float


 fx=x+1

 f5
 Cuál sería el resultado?
Una función que informa si una letra es o
no una vocal:

esVocal:: String -> Bool


esVocal “a” = True
esVocal “e” = True
esVocal “i” = True
esVocal “o” = True
esVocal “u” = True
esVocal x = False
Si se evalúa
esVocal “i”

Cuál es el resultado?
Tipos de datos genéricos
Permite aumentar su flexibilidad
mediante la utilización de tipos de datos
genéricos que una forma de implementar
el polimorfismo.

Ejemplo:
Listas con enteros (Int) y listas con
decimales (Float).
Listas
 Es una colección ordenada de valores.
 Todos los elementos deben ser del
mismo tipo.
 Pueden existir listas de listas

Ejemplos:
lista vacía: [ ]
lista de enteros del 1 al 5
[1,2,3,4,5]
[1..5]
[1,2..5]
Tipos básicos
Tipos de Listas
Funciones
 Se basan en las nociones matemáticas del
concepto de función.

 Es una relación entre dos conjuntos por


la cual a cada elemento de un conjunto le
corresponde un elemento del otro
conjunto.
(Dominio : Imagen)
f: 
Elementos básicos
 Tiene nombre único
 El alcance de los conjuntos dominio e
imagen de la función se representan
mediante la declaración del prototipo de
la función donde se especifican los tipos
de datos correspondientes.
 Se enumera una serie de ecuaciones con
todos los casos a contemplar.
Tipos polimórficos
Ejemplo de funciones polimórficas
 La serie de ecuaciones se compone de los
elementos posibles del dominio llamada
“patrón” y una expresión que representa
el elemento a retornar llamado resultado.

calcular:: Int -> Int


calcular 0 = 1
calcular 1 = 1
calcular 2 = 4
calcular 3 = 10
 Variable anónima: cuando se desconoce
el valor del dominio se utiliza “_” y ésta
puede tomar cualquier valor sin definir
las expresiones de la función.

 Ejemplo:
esCero :: Int -> Bool
esCero 0 = True
esCero a = False
Esta última se puede sustituir por:
esCero _ = False
Tipos sobrecargados
Clases básicas
Clase Eq (tipos comparables por
igualdad)
Clase Ord (tipos ordenados)
Clase Show (tipos mostrables)
Clase Read (tipos legibles)
Clase Num (tipos numéricos)
Clase Integral (tipos enteros)
Clase Fractional (tipos
fraccionarios)

También podría gustarte