La ejecución de un programa funcional consiste en el cálculo
del valor asociado al dato de entrada de acuerdo con las definiciones dadas
para las funciones en el programa. Un dato de entrada es una llamada a una
función f sobre un conjunto de argumentos t1, ..., tn que se expresa como f(t1,...,tn).
Para calcular el valor de f(t1,...,tn) puede o no ser
necesario calcular primero los valores de los argumentos t1,
..., tn.
Ejemplo
- 1) Para calcular el valor del dato de entrada num1+num2
es preciso saber el valor de ambos argumentos, num1
y num2 en cualquier caso.
- 2) Para calcular el valor del dato de entrada 0*num
no es necesario evaluar num, pues cualquier
valor multiplicado por 0 es
0.
Hay dos estrategias fundamentales para llevar a cabo la evaluación del dato de entrada:
- La estrategia voraz (eager) evalúa
todos los argumentos de la llamada a función antes de evaluar la
función en si.
- La estrategia perezosa (lazy) solo
evalúa los
argumentos de la llamada a función si es necesario hacerlo para
evaluar la función.