A functional correspondence between call-by-need evaluators and lazy abstract machines

作者: Mads Sig Ager , Olivier Danvy , Jan Midtgaard

DOI: 10.1016/J.IPL.2004.02.012

关键词: Program transformationCorrectnessEvaluation strategyProgram derivationArtificial intelligenceProgramming languageFunctional programmingDefunctionalizationAbstract machineComputer scienceHeap (data structure)

摘要: We bridge the gap between compositional evaluators and abstract machines for lambda-calculus, using closure conversion, transformation into continuation-passing style, defunctionalization of continuations. This article is a followup our at PPDP 2003, where we consider call by name value. Here, however, need.We derive lazy machine from an ordinary call-by-need evaluator that threads heap updatable cells. In this resulting machine, continuation fragment updating cell naturally appears as 'update marker', implementation technique was invented Three Instruction Machine subsequently used to construct variants Krivine's machine. Tuning leads other techniques such unboxed values. The correctness corollary original program transformations in derivation.

参考文章(43)
Simon L. Peyton Jones, David R. Lester, Implementing functional languages Prentice-Hall, Inc.. ,(1992)
Brian Randall, Lawford J. Russell, ALGOL 60 implementation ,(1964)
Lasse R. Nielsen, A Denotational Investigation of Defunctionalization BRICS Report Series. ,vol. 7, ,(2000) , 10.7146/BRICS.V7I47.20214
Thomas Johnsson, Fold-Unfold Transformations on State Monadic Interpreters Functional Programming. pp. 127- 140 ,(1995) , 10.1007/978-1-4471-3573-9_9
Maia Ginsburg, Andrew W. Appel, Modern Compiler Implementation in C ,(2007)
Jon Fairbairn, Stuart Wray, TIM: A simple, lazy abstract machine to execute supercombinatorics international conference on functional programming. pp. 34- 45 ,(1987) , 10.1007/3-540-18317-5_3
David S. Wise, Daniel P. Friedman, CONS Should Not Evaluate its Arguments. international colloquium on automata, languages and programming. pp. 257- 284 ,(1976)
Christian Queinnec, Kathleen Callaway, Lisp in Small Pieces ,(1994)
L Simon, Peyton Jones, The implementation of functional programming languages Prentice-Hall International. ,(1987)