Professional Documents
Culture Documents
Evaluacin Perezosa
Evaluacin Perezosa.
En la teora de lenguajes de programacin, 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.
Los beneficios de la evaluacin perezosa son:
Esta estrategia elige el redex que est "ms adentro" entendiendo por esto al
redex que no contiene otro redex. Si existe ms de un redex que cumple dicha
condicin se elige el que est ms a la izquierda.
Por ejemplo: mult (1+2,2+3)
aplicamos el primer + :
mult (3,2+3)
aplicamos el + :
mult (3,5)
aplicamos mult :
3*5
aplicamos * :
15
Elige el redex que est "ms afuera" entendiendo por esto al redex que no est
contenido en otro redex. Si existe ms de un redex que cumple dicha condicin
se elige el que est ms a la izquierda.
Ejemplo: mult (1+2,2+3)
aplicamos mult :
(1+2) * (2+3)
aplicamos el primer + :
3 * (2+3)
aplicamos + :
3*5
aplicamos * :
15
Inf
aplicamos inf :
1 + inf
1 + (1 + inf)
... 1 + (1 + (1 + (1 + (1 + (1 + .... +
fst (0,inf)
aplicamos inf :
aplicamos inf :
aplicamos inf :
aplicamos inf:
Si una alternativa falla, el ujo retorna hasta la ltima decisin e intenta otra.
Bsqueda no determinista
Un algoritmo no determinista
Datos no deterministas
Requiere tipo de datos diferente como son
Data list m a = nil (cons (m a) (m(list a))
Puede representar lista perezosa no determinista
Cons [2] [NIl. cons [1] ]:: list [] int
Los argumentos de cons representan computacin no determinista, permute y
IsSorted se pueden adaptar a la lista de tipo permute y genera permutaciones
perezosamente los rendimientos IsSorted [true, false] es aplicada por encima
de la lista (s).
Programacin funcional-lgica
La programacin lgica, junto con la funcional, forma parte de los que se
conoce como programacin declarativa. En los lenguajes tradicionales, la
programacin consiste en cmo resolver un problema mediante sentencias; en
la programacin lgica, se trabaja de forma descriptiva, estableciendo
relaciones entre entidades, indicando no como, sino que hacer.
La programacin funcional est constituida mediante definicin de funciones
puramente matemticas. Est basado en un modelo matemtico: lambdaclculo.
Bibliografas:
ldc.usb.ve/~suarez/papers/lazyOpt.pdf
https://www.cs.us.es/~jalonso/cursos/pd-09/temas/tema-10-1x2.pdf
https://prezi.com/lhnyd5gqlj_-/unidad-3-evaliacion-perezosa/