Está en la página 1de 7

ASIGNATURA:

PROGRAMACIN LOGICA Y FUNCIONAL



NOMBRE DEL DOCENTE:
LIC. ORLANDO DANIEL MENDOZA ALVAREZ

ALUMNO:
ANTONIO VELASCO PALACIO

TRABAJO:
UNIDAD III EVALUACIN PEREZOSA

CARRERA:
INGENIERA EN SISTEMAS COMPUTACIONALES

GRUPO: SEMESTRE LECTIVO:
SEPTIMO A AGOSTO-DICIEMBRE 2014



Santiago Pinotepa Nacional, Oaxaca, 15 de Octubre de 2014.



INTRODUCCIN
La evaluacin perezosa (del ingls lazy evaluation) o llamada por necesidad es una
estrategia de evaluacin que retrasa el clculo de una expresin hasta que su valor sea
necesario, y que tambin evita repetir la evaluacin en caso de ser necesaria en posteriores
ocasiones. Esta comparticin del clculo puede reducir el tiempo de ejecucin de ciertas
funciones de forma exponencial, comparado con otros tipos de evaluacin.
La evaluacin perezosa puede tambin reducir el consumo de memoria de una aplicacin, ya
que los valores se crean solo cuando se necesitan. Sin embargo, es difcil de combinar con
las operaciones tpicas de programacin imperativa, como el manejo de excepciones o las
operaciones de entrada/salida, porque el orden de las operaciones puede quedar
indeterminado. Adems, la evaluacin perezosa puede conducir a fragmentar la memoria.














UNIDAD lII
TEMA SUBTEMAS
EVALUACIN PEREZOSA
3.1. La estrategia de evaluacin
perezosa.
3.2. Tcnicas de programacin funcional
perezosa.

















EVALUACIN PEREZOSA
Evaluacin perezosa (lazy):
El evaluador hace solamente lo preciso. Corresponde a llamada por necesidad.
Significa: Haz slo lo que te pida un patrn a la izquierda de una ecuacin o cualificador
(where o let).
Es una estrategia de evaluacin que retrasa la evaluacin de una expresin hasta que el
valor de esto realmente se requiera (evaluacin no estricta) y que tambin evita
evaluaciones repetidas (compartimiento de ciencias informticas). El compartimiento
puede reducir la duracin de ciertas funciones por un factor exponencial sobre otras
estrategias de evaluacin no estrictas, como la llamada de nombre.

Las ventajas de la evaluacin perezosa incluyen:
El rendimiento aumenta debido a evitacin de clculos innecesarios y evitacin de
condiciones de error en la evaluacin de expresiones compuestas.
La capacidad de construir estructura de datos potencialmente infinita
La capacidad de definir estructura de control como abstracciones en vez de como obras
primitivistas.
La evaluacin perezosa puede llevar a la reduccin de la huella de memoria, ya que los
valores se crean cuando necesario. Sin embargo, con la evaluacin perezosa, es difcil
combinarse con rasgos imperativos como la excepcin que se maneja (manejo de la
excepcin) y entrada/salida (entrada/salida), porque el pedido de operaciones se hace
indeterminado.






3.1.- LA ESTRATEGIA DE EVALUACIN PEREZOSA
Se considera la funcin:
mult :: (Int,Int) -> Int
mult (x,y) = x*y


Evaluacin mediante paso de parmetros por valor (o por ms internos):
mult (1+2,2+3)
= mult (3,5) [por def. de +]
= 3*5 [por def. de mult]
= 15 [por def. de *]
Evaluacin mediante paso de parmetros por nombre (o por ms externos):
mult (1+2,2+3)

= (1+2)*(3+5) [por def. de mult]
= 3*5 [por def. de +]

Evaluacin con lambda expresiones
mult' :: Int -> Int -> Int
mult' x = \y -> x*y






Evaluacin:
mult (1+2) (2+3)
= mult 3 (2+3) [por def. de +]
= (_y ! 3*y) (2+3) [por def. de mult]
= (_y ! 3*y) 5 [por def. de +]
= 3*5 [por def. de +]
= 15 [por def. de *]
















3.2.- TCNICAS DE PROGRAMACIN FUNCIONAL PEREZOSA
La semntica adopta para el no determinstico es la eleccin en la invocacin (call-
time choice), por resultar ms natural para la programacin y ms eficaz en la
ejecucin al corresponderse con el mecanismo de comparticin.

En el no-deterministico existen varias tcnicas como:
Tcnica de Backtracking (Prolog): Si una alternativa falla, el flujo retorna
hasta la ltima decisin e intenta otra.
Tcnica de guardias (guards): Si ms de una es cierta, se escoge cualquiera
de ellas.
Tcnica de aprendizaje reforzado(A-LISP): recordar decisiones exitosas y
aumentar su prioridad as como considerar las decisiones en el contexto del
estado mutable.

Bsqueda no determinstica
Un algoritmo no determinista:
Ofrece muchos posibles resultados
Emplean modelos de computacin tales como la Maquina de Turing
Puede simularse utilizado las listas

También podría gustarte