Advertisement

A Rational Deconstruction of Landin’s J Operator

  • Olivier Danvy
  • Kevin Millikin
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4015)

Abstract

Landin’s J operator was the first control operator for functional languages, and was specified with an extension of the SECD machine. Through a series of meaning-preserving transformations (transformation into continuation-passing style (CPS) and defunctionalization) and their left inverses (transformation into direct style and refunctionalization), we present a compositional evaluation function corresponding to this extension of the SECD machine. We then characterize the J operator in terms of CPS and in terms of delimited-control operators in the CPS hierarchy. Finally, we present a motivated wish to see Landin’s name added to the list of co-discoverers of continuations.

Keywords

Symbolic Computation Abstract Machine Function Closure Full Correctness Direct Style 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Ager, M.S., Biernacki, D., Danvy, O., Midtgaard, J.: A functional correspondence between evaluators and abstract machines. In: Miller, D. (ed.) Proceedings of the Fifth ACM-SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP 2003), pp. 8–19. ACM Press, New York (2003)CrossRefGoogle Scholar
  2. 2.
    Ager, M.S., Danvy, O., Midtgaard, J.: A functional correspondence between call-by-need evaluators and lazy abstract machines. Information Processing Letters 90(5), 223–232 (2004); Extended version available as the technical report BRICS RS-04-3MATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Ager, M.S., Danvy, O., Midtgaard, J.: A functional correspondence between monadic evaluators and abstract machines for languages with computational effects. Theoretical Computer Science 342(1), 149–172 (2005); Extended version available as the technical report BRICS RS-04-28MATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Biernacka, M., Biernacki, D., Danvy, O.: An operational foundation for delimited continuations in the CPS hierarchy. Logical Methods in Computer Science 1(2:5), 1–39 (2005); A preliminary version was presented at the Fourth ACM SIGPLAN Workshop on Continuations (CW 2004) MathSciNetGoogle Scholar
  5. 5.
    Biernacki, D., Danvy, O.: A simple proof of a folklore theorem about delimited control. Research Report BRICS RS-05-25, DAIMI, Department of Computer Science, University of Aarhus, Aarhus, Denmark (August 2005); Theoretical Pearl to appear in the Journal of Functional ProgrammingGoogle Scholar
  6. 6.
    Burge, W.H.: Recursive Programming Techniques. Addison-Wesley, Reading (1975)MATHGoogle Scholar
  7. 7.
    Burstall, R.M.: Writing search algorithms in functional form. In: Michie, D. (ed.) Machine Intelligence, vol. 5, pp. 373–385. Edinburgh University Press (1969)Google Scholar
  8. 8.
    Clinger, W., Friedman, D.P., Wand, M.: A scheme for a higher-level semantic algebra. In: Reynolds, J., Nivat, M. (eds.) Algebraic Methods in Semantics, pp. 237–250. Cambridge University Press, Cambridge (1985)Google Scholar
  9. 9.
    Danvy, O.: A rational deconstruction of landin’s SECD machine. In: Grelck, C., Huch, F., Michaelson, G.J., Trinder, P. (eds.) IFL 2004. LNCS, vol. 3474, pp. 52–71. Springer, Heidelberg (2005); Extended version available as the technical report BRICS RS-03-33 CrossRefGoogle Scholar
  10. 10.
    Danvy, O., Filinski, A.: Abstracting control. In: Wand, M. (ed.) Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, Nice, France, June 1990, pp. 151–160. ACM Press, New York (1990)CrossRefGoogle Scholar
  11. 11.
    Danvy, O., Lawall, J.L.: Back to direct style II: First-class continuations. In: Clinger, W. (ed.) Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, San Francisco, California. LISP Pointers, vol. V(1), pp. 299–310. ACM Press, New York (2002)Google Scholar
  12. 12.
    Danvy, O., Millikin, K.: A rational deconstruction of Landin’s J operator. Research Report BRICS RS-06-04, DAIMI, Department of Computer Science, University of Aarhus, Aarhus, Denmark (February 2006)Google Scholar
  13. 13.
    Danvy, O., Nielsen, L.R.: Defunctionalization at work. In: Søndergaard, H. (ed.) Proceedings of the Third International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), Firenze, Italy, pp. 162–174. ACM Press, New York (2001)CrossRefGoogle Scholar
  14. 14.
    Danvy, O., Yang, Z.: An operational investigation of the CPS hierarchy. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 224–242. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  15. 15.
    Felleisen, M.: Reflections on Landin’s J operator: a partly historical note. Computer Languages 12(3/4), 197–207 (1987)MATHCrossRefGoogle Scholar
  16. 16.
    Filinski, A.: Representing monads. In: Boehm, H.-J. (ed.) Proceedings of the Twenty-First Annual ACM Symposium on Principles of Programming Languages, Portland, Oregon, pp. 446–457. ACM Press, New York (1994)Google Scholar
  17. 17.
    Friedman, D.P., Haynes, C.T.: Constraining control. In: Deusen, M.S.V., Galil, Z. (eds.) Proceedings of the Twelfth Annual ACM Symposium on Principles of Programming Languages, pp. 245–254. ACM Press, New York (1985)Google Scholar
  18. 18.
    Friedman, D.P., Wand, M., Haynes, C.T.: Essentials of Programming Languages, 2nd edn. MIT Press, Cambridge (2001)MATHGoogle Scholar
  19. 19.
    Futamura, Y.: Partial evaluation of computation process – an approach to a compiler-compiler. Systems Computers Controls 2(5), 45–50 (1971); Reprinted in Higher-Order and Symbolic Computation 12(4), 381–391 (1999) with an interview [20] Google Scholar
  20. 20.
    Futamura, Y.: Partial evaluation of computation process, revisited. Higher-Order and Symbolic Computation 12(4), 377–380 (1999)CrossRefGoogle Scholar
  21. 21.
    Kameyama, Y.: Axioms for delimited continuations in the CPS hierarchy. In: Marcinkowski, J., Tarlecki, A. (eds.) CSL 2004. LNCS, vol. 3210, pp. 442–457. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  22. 22.
    Landin, P.J.: The mechanical evaluation of expressions. The Computer Journal 6(4), 308–320 (1964)MATHGoogle Scholar
  23. 23.
    Landin, P.J.: A correspondence between Algol 60 and Church’s lambda notation. Commun. ACM 8, 89–101, 158–165 (1965)CrossRefMathSciNetGoogle Scholar
  24. 24.
    Landin, P.J.: A generalization of jumps and labels. Research report, UNIVAC Systems Programming Research (1965); Reprinted in Higher-Order and Symbolic Computation 11(2), 125–143 (1998) with a foreword [36]Google Scholar
  25. 25.
    Landin, P.J.: The next 700 programming languages. Commun. ACM 9(3), 157–166 (1966)MATHCrossRefGoogle Scholar
  26. 26.
    Landin, P.J.: Histories of discoveries of continuations: Belles-lettres with equivocal tenses. In: Danvy, O. (ed.) Proceedings of the Second ACM SIGPLAN Workshop on Continuations (CW 1997), Technical report BRICS NS-96-13, University of Aarhus, pp 1:1–9, Paris, France (January 1997) Google Scholar
  27. 27.
    Landin, P.J.: My years with Strachey. Higher-Order and Symbolic Computation 13(1/2), 75–76 (2000)MATHCrossRefGoogle Scholar
  28. 28.
    Morris, F.L.: The next 700 formal language descriptions. Lisp and Symbolic Computation 6(3/4), 249–258 (1993); Reprinted from a manuscript dated 1970 CrossRefGoogle Scholar
  29. 29.
    Mosses, P.D.: A foreword to ‘Fundamental concepts in programming languages’. Higher-Order and Symbolic Computation 13(1/2), 7–9 (2000)CrossRefGoogle Scholar
  30. 30.
    Murthy, C.R.: Control operators, hierarchies, and pseudo-classical type systems: A-translation at work. In: Danvy, O., Talcott, C.L. (eds.) Proceedings of the First ACM SIGPLAN Workshop on Continuations (CW 1992), Technical report STAN-CS-92-1426, Stanford University, San Francisco, California, pp. 49–72 (June 1992) Google Scholar
  31. 31.
    Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: Proceedings of 25th ACM National Conference, Boston, Massachusetts, pp. 717–740 (1972); Reprinted in Higher-Order and Symbolic Computation 11(4), 363–397 (1998), with a foreword [33] Google Scholar
  32. 32.
    Reynolds, J.C.: The discoveries of continuations. Lisp and Symbolic Computation 6(3/4), 233–247 (1993)CrossRefGoogle Scholar
  33. 33.
    Reynolds, J.C.: Definitional interpreters revisited. Higher-Order and Symbolic Computation 11(4), 355–361 (1998)MATHCrossRefGoogle Scholar
  34. 34.
    Steele Jr., G.L.: Rabbit: A compiler for Scheme. Master’s thesis, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Massachusetts (May 1978); Technical report AI-TR-474Google Scholar
  35. 35.
    Strachey, C.: Fundamental concepts in programming languages. In: International Summer School in Computer Programming, Copenhagen, Denmark (August 1967); Reprinted in Higher-Order and Symbolic Computation 13(1/2), 11–49 (2000) with a foreword [29]Google Scholar
  36. 36.
    Thielecke, H.: An introduction to Landin’s A generalization of jumps and labels. Higher-Order and Symbolic Computation 11(2), 117–124 (1998)MATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Olivier Danvy
    • 1
  • Kevin Millikin
    • 1
  1. 1.BRICS, Department of Computer ScienceUniversity of AarhusAarhus NDenmark

Personalised recommendations