Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
perezosa
Programacin funcional y lgica
Instituto Tecnolgico Superior de Pnuco
Denisse Itzayana Flores Ros
Ing. Gil Santana Esparza
Introduccin.
En programacin, una estructura de datos es una forma particular de organizar
datos en una computadora para que pueda ser utilizado de manera eficiente. 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. La
evaluacin perezosa consiste, como siempre que hablamos de pereza, en hacer el
mnimo trabajo posible. Es decir, una expresin no se evala hasta que realmente
se necesita. JavaScript lo utiliza slo puntualmente, pero hay lenguajes, como
Haskell, que lo utilizan siempre. Podemos ver la diferencia con una funcin que
tiene otras funciones como parmetros. Un lenguaje sin evaluacin perezosa
ejecutara las funciones func1(), func2() y func3() para obtener los parmetros
finales y despus continuara con el cuerpo de la funcin. En cambio un lenguaje
con evaluacin perezosa empieza con el cdigo de la funcin sin evaluar
previamente las tres funciones. Las ir evaluando cuando aparezcan en el cdigo
y sean realmente necesarias. De esta forma, si un argumento no se utiliza, nunca
ser evaluado.
Evaluacin perezosa.
La evaluacin perezosa es, segn Hughes, otra cola de pegar que permite
ensamblar juntas piezas de un programa funcional que de otro modo seran
disjuntas. Igual que el orden superior, abstraen aspectos comunes y convierte los
aspectos especficos en parmetros, proporcionando as un modo de ensamblar
entre s piezas independientes, la evaluacin perezosa permite separar el aspecto
de la generacin de los datos del aspecto de su consumo, permitiendo que una
funcin distinta se ocupe de cada uno de ellos.
Un smil podra aclarar qu se entiende por evaluacin perezosa: una fbrica
produce muebles de cocina y una tienda dotada de un pequeo almacn los
vende. Con el fin de minimizar el inmovilizado, la fbrica solo comienza a fabricar
cuando la tienda le comunica una venta segura. A su vez, la fbrica hace su
pedido de madera, metal, vidrio, etc. Solo cuando necesita fabricar algn mueble.
Es decir, todo el proceso est dirigido por la demanda. En ltima instancia, el rbol
que da lugar al mueble empezara a ser cortado a partir del momento que exista
un cliente para dicho mueble. No cabe duda de que esta organizacin tiene
inconvenientes pero tambin tiene evidentes ventajas: ninguna hora de trabajo
sera en vano, no se desperdiciara ni un solo gramo de material y no se
necesitara apenas un almacenaje intermedio. S llamamos CortarMadera, fabricar
y vender a las funciones involucradas, el proceso completo podra definirse
mediante la composicin funcional de las tres.1
muebles= (vender.fabricar.CortarMadera) arboles
Donde arboles representa a la lista infinita de rboles y todas las funciones
producen listas infinitas a
en poco tiempo, como los rboles del planeta. La razn es que tratara de evaluar
la lista muebles antes de llamar a head. En una fbrica y lenguajes perezosos, en
cambio, la misma llamada desencadenara la cantidad de proceso estrictamente
necesaria, en cada una de las tres funciones, para producirse un solo mueble.
La evaluacin perezosa es ms complicada de implementar que la impaciente. El
computo es un constante arrancar y parar como el que es fcil imaginar en la
fbrica perezosa de muebles que hemos descrito. Sin embargo, no debemos
preocuparnos demasiado, porque eso es tarea de los compiladores. Lo que
importa es que el programador le simplifica su trabajo, ya que sabiendo que al final
de la cadena hay otra funcin que establece la demanda estrictamente necesaria.
Conclusin:
Entre las ventajas citadas de la evaluacin perezosa estn tambin las siguientes:
evaluacin perezosa.
Permite definir funciones no estrictas, es decir, funciones que pueden dar
Bibliografa:
Pea Mar Ricardo, (2008) De Euclides a Java. Historia de los algoritmos y de los
lenguajes de programacin. Editorial AGT.
NOTA: Este reporte ha sido extrado del libro mencionado.