Normalization by Evaluation for the Computational Lambda-Calculus
We show how a simple semantic characterization of normalization by evaluation for the λβη-calculus can be extended to a similar construction for normalization of terms in the computational λ-calculus. Specifically, we show that a suitable residualizing interpretation of base types, constants, and computational effects allows us to extract a syntactic normal form from a term’s denotation. The required interpretation can itself be constructed as the meaning of a suitable functional program in an ML-like language, leading directly to a practical normalization algorithm. The results extend easily to product and sum types, and can be seen as a formal basis for call-by-value type-directed partial evaluation.
KeywordsNormal Form Base Type Partial Evaluation Abstract Syntax Normalization Algorithm
Unable to display preview. Download preview PDF.
- 1.Thorsten Altenkirch, Martin Hofmann, and Thomas Streicher. Categorical reconstruction of a reduction free normalization proof. In Category Theory and Computer Science, 6th International Conference, number 953 in Lecture Notes in Computer Science, 1995.Google Scholar
- 4.Ulrich Berger and Helmut Schwichtenberg. An inverse of the evaluation functional for typed λ-calculus. In Proceedings of the Sixth Annual IEEE Symposium on Logic in Computer Science, pages 203–211, Amsterdam, The Netherlands, July 1991.Google Scholar
- 7.Olivier Danvy. Type-directed partial evaluation. In J. Hatcliff, T.æ. Mogensen, and P. Thieman, editors, Partial Evaluation — Practice and Theory; Proceedings of the 1998 DIKU Summer School, number 1706 in Lecture Notes in Computer Science, pages 367–411. Springer-Verlag, Copenhagen, Denmark, July 1998.Google Scholar
- 8.Olivier Danvy and Peter Dybjer, editors. Preliminary Proceedings of the APPSEM Workshop on Normalization by Evaluation. Department of Computer Science, University of Aarhus, May 1998. BRICS Note NS-98-1.Google Scholar
- 10.Andrzej Filinski. Representing layered monads. In Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 175–188, San Antonio, Texas, January 1999.Google Scholar
- 12.Marcelo Fiore, Gordon Plotkin, and Daniele Turi. Abstract syntax and variable binding. In Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science, pages 193–202, Trento, Italy, July 1999.Google Scholar
- 13.Cormac Flanagan, Amr Sabry, Bruce F. Duba, and Matthias Felleisen. The essence of compiling with continuations. In Proceedings of the SIGPLAN’ 93 Conference on Programming Language Design and Implementation, pages 237–247, Albuquerque, New Mexico, June 1993.Google Scholar
- 14.Murdoch Gabbay and Andrew Pitts. A new approach to abstract syntax involving binders. In Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science, pages 214–224, Trento, Italy, July 1999.Google Scholar
- 15.Bernd Grobauer and Zhe Yang. The second Futamura projection for type-directed partial evaluation. In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 22–32. ACM Press, January 2000.Google Scholar
- 16.Eugenio Moggi. Computational lambda-calculus and monads. In Proceedings of the Fourth Annual Symposium on Logic in Computer Science, pages 14–23, Pacific Grove, California, June 1989. IEEE.Google Scholar
- 18.Eijiro Sumii and Naoki Kobayashi. Online-and-offine partial evaluation: A mixed approach. In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 12–21. ACM Press, January 2000.Google Scholar