Você está na página 1de 43

PLYF UNIDAD 1.

Conceptos Fundamentales
Enero-Junio 2014 MTI. Rosa Imelda Garca Chi
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

PROGRAMACIN LGICA FUNCIONAL

1.2 EVALUACIN DE EXPRESIONES

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

1.2. Evaluacin de Expresiones

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Clculo del valor de expresiones


Para calcular el valor de una expresin e, se van aplicando las ecuaciones del programa, orientadas de izquierda a derecha.

Este proceso se llama reduccin o reescritura.

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Clculo del valor de expresiones


En un paso de reescritura que use la ecuacin orientada l=r, se localiza una parte l de la expresin e con la misma forma que l y se reemplaza por otra expresin r con la misma forma que r. Ms exactamente, la parte l de e (llamada redex) debe ser el resultado de aplicar una sustitucin adecuada a las variables de l y r debe ser el resultado de aplicar esta misma sustitucin a las variables de r. La sustitucin representa el reemplazamiento de parmetros formales por parmetros actuales.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Clculo del valor de expresiones

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Clculo del valor de expresiones


En general para evaluar una expresin e no basta con un solo paso de reescritura, sino que hay que reiterar el proceso de reduccin hasta alcanzar una expresin que ya no se pueda reducir ms, la cual se llama forma normal de la expresin inicial. La serie de pasos que conduce desde una expresin inicial hasta su forma normal se llama secuencia de reduccin.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Clculo del valor de expresiones


Puesto que cada paso de reescritura se puede elegir de varias maneras, generalmente hay varias secuencias de reduccin a partir de una misma expresin inicial. Como ejemplo, veamos dos secuencias de reduccin diferentes que transforman la expresin cuadrado (2+3) a forma normal. Para mayor claridad, el redex reducido en cada paso de reescritura aparece subrayado:
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Estrategias de reduccin: evaluacin impaciente y perezosa

Al no ser nica la secuencia de reduccin que se puede producir a partir de una expresin inicial dada, las diferencias implementaciones de lenguajes funcionales utilizan distintos criterios para restringir el cmputo a una sola posibilidad. Cada criterio bien definido para escoger solamente uno de los redex posibles en cada paso de reescritura, se llama estrategia de reduccin.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Las dos estrategias de reduccin ms importantes son:

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Sobre la evaluacin perezosa


Un inconveniente de la evaluacin perezosa, segn la hemos explicado hasta ahora, es que en algunos casos puede requerir ms pasos de reduccin que la evaluacin impaciente.

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

la evaluacin perezosa
Como ejemplo de esta situacin sirve la evaluacin de la expresin cuadrado (2+3), mostrada anteriormente. En la prctica, este inconveniente se puede evitar utilizando una representacin de la expresin de cmputo que identifique partes repetidas de la misma, evitando as que sean evaluadas varias veces.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

la evaluacin perezosa
Las implementaciones de la evaluacin perezosa siempre emplean esta tcnica, denominada estructura compartida. Por ejemplo, la evaluacin perezosa de cuadrado (2+3) con estructura compartida produce un cmputo con el miso nmero pasos de reduccin que la evaluacin impaciente:
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

El valor indefinido

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Funciones estrictas y no estrictas

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Razonamiento con ecuaciones

En los lenguajes funcionales puros, tales como Haskell, la evaluacin de una expresin nunca produce efectos colaterales y da un resultado independiente del contexto en el que se use la expresin.

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Razonamiento con ecuaciones


Esta propiedad, llamada transparencia referencial, permite utilizar las ecuaciones de un programa funcional no solamente para calcular, como ya hemos visto, sino tambin para razonar. El clculo manual sirve para comprobar el comportamiento de programa en casos particulares, mientras que el razonamiento sirve para verificar propiedades generales del comportamiento del programa.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Esto se puede razonar distinguiendo dos casos:

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Razonamiento con ecuaciones

En este y otros ejemplos, el clculo simblico puede utilizar propiedades conocidas de funciones predefinidas, tales como 2*n=n+n En otros ejemplos ms complicados, el razonamiento con las ecuaciones de un programa debe combinar la ejecucin simblica con tcnicas de induccin.
Programacin Lgica y Funcional MTI. Rosa Imelda Garca Chi

Por su atencin gracias!

Programacin Lgica y Funcional

MTI. Rosa Imelda Garca Chi

Você também pode gostar