Integrating Strict and Lazy Evaluation: The lambda-sl-Calculus

The usual way for integrating strict and lazy evaluation in functional programming is the introduction of an explicit “freeze” instruction in a call-by-value framework. We propose and discuss an alternative formal solution, based on the existence of two different sorts of variables: the strict and the lazy ones. The λsl-calculus is the pure theory underlying this approach. An abstract environment machine for this calculus, that is essentially a variation on the theme of the Categorical Abstract Machine, is defined, and its correctness is proved.