Es una estrategia de evaluación que retrasa el cálculo de una
expresión hasta que su valor sea necesario, y que también evita
repetir la evaluación en caso de ser necesaria en posteriores
ocasiones. Esta compartición del cálculo puede reducir el
tiempo de ejecución de ciertas funciones de forma exponencial,
comparado con otros tipos de evaluación.
TIPOS DE ESTRATEGIAS
De adentro hacia
fuera o Call - by - value
Esta estrategia elige el redex que esta mas
adentro, entendiendo que el redex no tiene otro
redex. Si existe mas de un redex que cumple dicha
condición se elige el que esta mas a la izquierda.
De afuera hacia adentro
o Call - by - name
Elije al redex que se encuentra mas
afuera. Si existe mas de un redex, que
cumple dicha condición se elige el que
esta mas a la izquierda.
Evaluaciones que no
terminan
FUNCIONES
La evaluación perezosa puede también reducir el consumo de memoria de una aplicación, ya
que los valores se crean solo cuando se necesitan. Sin embargo, es difícil de combinar con la
operaciones típicas de programación imperativa, como el manejo de excepciones o las
operaciones de entrada/salida, porque el orden de las operaciones puede quedar
indeterminado. Además, la evaluación perezosa puede conducir a fragmentar la memoria. Lo
contrario de la evaluación perezosa sería la evaluación acaparadora, o evaluación estricta,
que es el modo de evaluación por defecto en la mayoría de los lenguajes de programación.
VENTAJAS Y DESVENTAJAS
Es una estrategia de evaluación que retrasa el cálculo
de una expresión hasta que su valor sea necesario, y
que también evita repetir la evaluación en caso de ser
necesaria en posteriores ocasiones. Esta compartición
del cálculo puede reducir el tiempo de ejecución de
ciertas funciones de forma exponencial, comparado con
otros tipos de evaluación.
Una característica singular de Haskell es su carácter perezoso, frente al
impaciente de la mayoría de los restantes lenguajes. Los lenguajes
perezosos usan evaluación perezosa; es decir, al evaluar una expresión
evalúan sus argumentos sólo cuando los necesita. De manera opuesta, en la
evaluación impaciente los argumentos de las expresiones se evalúan antes
que las expresiones. En esta entrada presento un ejercicio para Informática
(del Grado de Matemáticas) con objeto de resaltar la ventaja de la
evaluación perezosa de Haskell frente a la evaluación impaciente de Maxima.
Para ello compararé sus rendimientos al calcular los k primeros elementos
de una lista con definiciones semejantes en Haskell y Maxima. Continuar
leyendo Ventajas de la pereza en el problema de los k menores elementos
TÉCNICAS DE LA
EVALUACIÓN
FUNCIONAL
TÈCNICA DE BACKTRAKING
Si una alternativa falla, el
flujo retrocede hasta la
ultima desicioó e intenta
de nuevo.
TÉCNICA DE GUARDIAS
Si mas de una es cierta, se
escoge cualquiera de ellas.
TÉCNICA DE APRENDIZAJE REFORSADO
Recordar decisiones exitosas y aumentar su
prioridad así como considerar las decisiones
en el contexto del estado mutable.