Está en la página 1de 6

INTRODUCCIÓN

La evaluación perezosa (del inglés lazy evaluation) o llamada por necesidad es una
estrategia de evaluación que retrasa el cálculo de una expresión hasta que su valor sea
necesario, y que también evita repetir la evaluación en caso de ser necesaria en posteriores
ocasiones. Esta compartición del cálculo puede reducir el tiempo de ejecución de ciertas
funciones de forma exponencial, comparado con otros tipos de evaluación.

La evaluación perezosa puede también reducir el consumo de memoria de una aplicación, ya


que los valores se crean solo cuando se necesitan. Sin embargo, es difícil de combinar con
las operaciones típicas de programación imperativa, como el manejo de excepciones o las
operaciones de entrada/salida, porque el orden de las operaciones puede quedar
indeterminado. Además, la evaluación perezosa puede conducir a fragmentar la memoria.
UNIDAD lII

TEMA SUBTEMAS

3.1. La estrategia de evaluación

EVALUACIÓN PEREZOSA perezosa.

3.2. Técnicas de programación funcional


perezosa.

EVALUACIÓN PEREZOSA

Evaluación perezosa (lazy):

 El evaluador hace solamente lo preciso. Corresponde a llamada por necesidad.


 Significa: Haz sólo lo que te pida un patrón a la izquierda de una ecuación o cualificador
(where o let).
 Es una estrategia de evaluación que retrasa la evaluación de una expresión hasta que el
valor de esto realmente se requiera (evaluación no estricta) y que también evita
evaluaciones repetidas (compartimiento de ciencias informáticas). El compartimiento
puede reducir la duración de ciertas funciones por un factor exponencial sobre otras
estrategias de evaluación no estrictas, como la llamada de nombre.

Las ventajas de la evaluación perezosa incluyen:

 El rendimiento aumenta debido a evitación de cálculos innecesarios y evitación de


condiciones de error en la evaluación 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 evaluación perezosa puede llevar a la reducción de la huella de memoria, ya que los
valores se crean cuando necesario. Sin embargo, con la evaluación perezosa, es difícil
combinarse con rasgos imperativos como la excepción que se maneja (manejo de la
excepción) y entrada/salida (entrada/salida), porque el pedido de operaciones se hace
indeterminado.

3.1.- LA ESTRATEGIA DE EVALUACIÓN PEREZOSA

Se considera la función:

mult :: (Int,Int) -> Int


mult (x,y) = x*y

 Evaluación mediante paso de parámetros por valor (o por más internos):

mult (1+2,2+3)

= mult (3,5) [por def. de +]

= 3*5 [por def. de mult]

= 15 [por def. de *]

 Evaluación mediante paso de parámetros por nombre (o por más externos):

mult (1+2,2+3)

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


= 3*5 [por def. de +]

Evaluación con lambda expresiones

mult' :: Int -> Int -> Int


mult' x = \y -> x*y

Evaluación:

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.- TÉCNICAS DE PROGRAMACIÓN FUNCIONAL PEREZOSA

La semántica adopta para el no determinístico es la elección en la invocación (call-


time choice), por resultar más natural para la programación y más eficaz en la
ejecución al corresponderse con el mecanismo de compartición.

En el no-deterministico existen varias técnicas como:

 Técnica de Backtracking (Prolog): Si una alternativa “falla”, el flujo retorna


hasta la última decisión e intenta otra.
 Técnica de guardias (guards): Si más de una es cierta, se escoge cualquiera
de ellas.
 Técnica de aprendizaje reforzado(A-LISP): recordar decisiones exitosas y
aumentar su prioridad así como considerar las decisiones en el contexto del
estado mutable.

Búsqueda no determinística

Un algoritmo no determinista:

 Ofrece muchos posibles resultados


 Emplean modelos de computación tales como la Maquina de Turing
 Puede simularse utilizado las listas

También podría gustarte