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.