Está en la página 1de 4

INGENIERIA EN SISTEMAS COMPUTACIONALES

MATERIA: PROGRAMACIN LGICA Y FUNCIONAL

CATEDRTICO: AGUILAR ORTIZ GABRIELA

ALUMNA: DE LA LUZ CASTELLANOS ERIKA

GRUPO: ISA AULA: I13 HORARIO: 10-11 HRS

SEMESTRE: AGO-DIC/2012

TRABAJO: INVESTIGACIN

QU ES LA EVALUACIN PEREZOSA?

Evaluacin impaciente (eager): el evaluador hace todo lo que puede. Corresponde a llamada por-valor.

Evaluacin perezosa (lazy):

El evaluador hace solamente lo preciso. Corresponde a llamada pornecesidad.

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.
2

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. La evaluacin perezosa puede introducir el agujero espacial. Tambin, la depuracin es difcil.

ESTRATEGIAS DE PROGRAMACIN PEREZOSA

Para los ejemplos 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 (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 *]