Anda di halaman 1dari 3

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

LOGICA DE 1ER ORDEN


la Lgica de Primer Orden, tambin conocida como Clculo de Predicados, introduce un conjunto de
smbolos que nos permiten expresarnos acerca de los objetos en un dominio de discurso dado. El
conjunto de todos estos objetos se conoce como universo de discurso (U). Los miembros del universo
de discurso pueden ser objetos concretos, ej., un libro, un robot, etc; abstractos, ej., nmeros; e
incluso, ficticios, ej., unicornios, etc. Un objeto es algo sobre lo cual queremos expresarnos. Como
ejemplo, consideren el multi citado mundo de los bloques. El universo de discurso para tal escenario
es el conjunto que incluye los cinco bloques, la el brazo robtico y la mesa: {a, b, c, d, e, brazo,
mesa}. Una funcin es un tipo especial de relacin entre los objetos del dominio de discurso. Este
tipo de relaciones mapea un conjunto de objetos de entrada a un objeto nico de salida. Por ejemplo,
es posible definir la funcin parcial sombrero que mapea un bloque al bloque que se encuentra
encima de l, si tal bloque existe.
son: {(b, a),(c, d),(d, e)}. El conjunto de todas las funciones consideradas en la conceptualizacin del
mundo se conoce como base funcional. Un segundo tipo de relacin sobre los objetos del dominio de
discurso son los predicados. Diferentes predicados pueden definirse en el mundo de los bloques, por
ejemplo, el predicado sobre que se cumple para dos bloques, si y slo si el primero est
inmediatamente encima del segundo. Para la escena mostrada en la figura 11, sobre/2 se define por
los pares {(a, b),(d, c),(e, d)}. Otro predicado puede ser libre/1, que se cumple para un bloque si y
slo si ste no tiene ningn bloque encima. Este predicado tiene los siguientes elementos {a, e}. El
conjunto de todos los predicados usados en la conceptuacin se conoce como base relacional.
Sintaxis de la Lgica de Primer Orden El alfabeto de la Lgica de Primer Orden se obtiene al extender
la lgica proposicional con un conjunto numerable de smbolos de predicados (Pred) y funciones
(Func). Se asume un conjunto infinito de variables (Var) que toman valores en el universo de
discurso. |f| denota la aridad del predicado o funcin f, es decir, su nmero de argumentos. Los
predicados de aridad cero se asumen como constantes. Los trminos de nuestro lenguaje de Primer
Orden se forman de variables, constantes y funciones aplicados a estos. Por ejemplo:
calif(hermano(alex), sma) denota la calificacin obtenida por el hermano de Alex en el curso de
Sistemas Multi-Agentes. Formalmente, utilizando notacin Backus Naur (BNF):
Definicin 1 (Trminos) Un trmino se define por:
t ::= x | c | f(t, ... , t)
donde x 2 Var; c 2 Func tal que |c| = 0; y f 2 Func tal que |f| > 0.
Observen que los constructores bsicos de los trminos son las variables y las constantes (functores
de aridad 0). Se pueden formar trminos ms complejos usando functores de aridad mayor a cero,
cuyos argumentos son a su vez trminos. Por lo tanto, la nocin de trmino depende del conjunto
Func.

Definicin 2 (Sintaxis) El lenguaje de la Lgica de Primer Orden LLPO se construye a partir de las
variables Var, los functores Func y los predicados Pred como sigue:

donde P 2 Pred es un smbolo de predicado de aridad n > 1; ti denota trminos sobre Func;

Observen que los argumentos de un predicado son siempre trminos. Los predicados de aridad cero
puden verse como variables proposicionales.

Anda mungkin juga menyukai