En programación funcional, un programa consta de:
- un conjunto de operaciones primitivas cuyo significado está
predeterminado en el sistema. Por ejemplo, la suma de números enteros,
la resta, el producto, etc.
- un conjunto de definiciones de función, establecidas por el
programador, que eventualmente emplearán las operaciones primitivas.
Por ejemplo, la función factorial.
- un dato de entrada (entendido como la aplicación de una de las
funciones definidas sobre otros datos). Por ejemplo: fact(2*fact(2)).
La ejecución del 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. El proceso de cálculo de dicho valor se
conoce como
evaluación
del dato de entrada. Dicha evaluación
puede realizarse de muchas formas, pero hay dos estrategias fundamentales para
llevarla a cabo: la estrategia voraz (eager) y la
estrategia perezosa (lazy).
La elección de una u otra tiene importantes repercusiones en la
implementación y en el comportamiento
operacional del proceso de
evaluación.