Postprint version. Published in Proceedings of the 2005 Workshop on Functional and Declarative Programming in Education, September 25, 2005, pages 9-13.
© ACM, 2005. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in Proceedings of the 2005 Workshop on Functional and Declarative Programming in Education and is available at http://dx.doi.org/10.1145/1085114.1085118.
NOTE: At the time of publication, the author John Clements was not yet affiliated with Cal Poly.
Students have trouble understanding the difference between lazy and strict programming. It is difficult to compare the two directly, because popular strict languages and popular lazy languages differ in their syntax, in their type systems, and in other ways unrelated to the lazy/strict evaluation discipline.
While teaching programming languages courses, we have discovered that an extension to PLT Scheme allows the system to accommodate both lazy and strict evaluation in the same system. Moreover, the extension is simple and transparent. Finally, the simple nature of the extension means that the resulting system provides a rich environment for both lazy and strict programs without modification.