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.