Very Lazy Evaluation - A new execution model for functional programming languages
Jan Rochel
Abstract
Jan Rochel
Abstract
In the recent years a multitude of functional language implementations has been\ndeveloped, whereby those being intended for practical use share a very fundamental\nproperty: The execution models employed by implementations designed for\nefficient program execution are all based on some form of graph-reduction. This\nthesis introduces a new execution model for strongly-typed, higher-order, non-strict,\npurely-functional programming languages, that does not rely on graph-reduction\nbut a new concept called very lazy evaluation. It uses an unconventional approach\nto evaluate expressions of the λ-calculus, that differs considerably from traditional\nterm rewrite systems. Its method to perform function applications allows arguments\nto be handled in a way, that is more lazy than in existing graph-reduction based\nmodels. This leads to a new type of abstract machine, which promises very efficient\nprogram execution and might also be quite suitable to be implemented in hardware.\nA proof-of-concept implementation of the execution model is given, which consists\nof a compiler generating abstract machine code from a source program, and the\nabstract machine that interpretes the result. By using it to execute real programs it\nis shown, that the correct results are evaluated and that the approach therefore is a\nvalid alternative to existing execution models.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
In the recent years a multitude of functional language implementations has been\ndeveloped, whereby those being intended for practical use share a very fundamental\nproperty: The execution models employed by implementations designed for\nefficient program execution are all based on some form of graph-reduction. This\nthesis introduces a new execution model for strongly-typed, higher-order, non-strict,\npurely-functional programming languages, that does not rely on graph-reduction\nbut a new concept called very lazy evaluation. It uses an unconventional approach\nto evaluate expressions of the λ-calculus, that differs considerably from traditional\nterm rewrite systems. Its method to perform function applications allows arguments\nto be handled in a way, that is more lazy than in existing graph-reduction based\nmodels. This leads to a new type of abstract machine, which promises very efficient\nprogram execution and might also be quite suitable to be implemented in hardware.\nA proof-of-concept implementation of the execution model is given, which consists\nof a compiler generating abstract machine code from a source program, and the\nabstract machine that interpretes the result. By using it to execute real programs it\nis shown, that the correct results are evaluated and that the approach therefore is a\nvalid alternative to existing execution models.
Key concepts: Computer science, Compiler, Graph reduction, Programming language, Functional programming, Abstract machine, Lazy evaluation, Execution model