Definitional interpreters for higher-order programming languages

Definitional interpreters for higher-order programming languages

1998 | John C. Reynolds
The paper by John C. Reynolds, "Definitional Interpreters for Higher-Order Programming Languages," explores the methods of defining programming languages through interpreters written in a simpler, well-understood language. The author classifies these interpreters based on whether they contain higher-order functions and whether the order of application (call by value versus call by name) in the defined language depends on the order in the defining language. The paper discusses the characteristics of applicative and imperative features in programming languages, the concept of higher-order languages, and the challenges in defining higher-order languages. It introduces a simple applicative language and presents a meta-circular interpreter that uses higher-order functions and is order-of-application dependent. The paper then demonstrates how to transform this interpreter into examples of other classes, each with different properties, and addresses the problem of adding imperative features to the defined language while keeping the defining language purely applicative. The transformations are motivated by their application to interpreters but are applicable to any program written in the defining language.The paper by John C. Reynolds, "Definitional Interpreters for Higher-Order Programming Languages," explores the methods of defining programming languages through interpreters written in a simpler, well-understood language. The author classifies these interpreters based on whether they contain higher-order functions and whether the order of application (call by value versus call by name) in the defined language depends on the order in the defining language. The paper discusses the characteristics of applicative and imperative features in programming languages, the concept of higher-order languages, and the challenges in defining higher-order languages. It introduces a simple applicative language and presents a meta-circular interpreter that uses higher-order functions and is order-of-application dependent. The paper then demonstrates how to transform this interpreter into examples of other classes, each with different properties, and addresses the problem of adding imperative features to the defined language while keeping the defining language purely applicative. The transformations are motivated by their application to interpreters but are applicable to any program written in the defining language.
Reach us at info@study.space
Understanding Definitional Interpreters for Higher-Order Programming Languages