An Intrinsic Denotational Semantics for a Lazy Functional Language

  • Leonardo  Rodríguez
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9325)


In this paper we present a denotational semantics for a lazy functional language. The semantics is intrinsic in the sense that it defines meaning for typing derivations instead of language expressions. We contrast our semantics with the well-known evaluation rules defined by Sestoft [17] and show that these rules preserve types and meaning.


Denotational semantics Lazy evaluation Type theory 


  1. 1.
  2. 2.
    The Coq Proof Assistant.
  3. 3.
    Abramsky, S.: The lazy lambda calculus. In: Turner, D. (ed.) Research Topics in Functional Programming, pp. 65–116. Addison-Wesley, Boston (1990)Google Scholar
  4. 4.
    Abramsky, S., Ong, C.L.: Full abstraction in the lazy lambda calculus. Inf. Comput. 105(2), 159–267 (1993)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Benton, N., Kennedy, A., Varming, C.: Formalizing Domains, Ultrametric Spaces and Semantics of Programming Languages (2010), unpublishedGoogle Scholar
  6. 6.
    Breitner, J.: The correctness of Launchbury’s natural semantics for lazy evaluation. Archive of Formal Proofs (2013)Google Scholar
  7. 7.
    Hughes, R.J.M.: Super-combinators: a new implementation method for applicative languages. In: Proceedings of the 1982 ACM Symposium on LISP and Functional Programming, LFP 1982, pp. 1–10. ACM, New York (1982)Google Scholar
  8. 8.
    Jones, P.L.S.: Implementing lazy functional languages on stock hardware: the spineless tagless G-machine. J. Funct. Program. 2(2), 127–202 (1992)CrossRefzbMATHGoogle Scholar
  9. 9.
    Josephs, M.B.: The semantics of lazy functional languages. Theor. Compu. Sci. 68(1), 105–111 (1989)MathSciNetCrossRefzbMATHGoogle Scholar
  10. 10.
    Kieburtz, R.B.: The G-machine: a fast, graph-reduction evaluator. In: Jouannaud, J.P. (ed.) FPLCA 1985. LNCS, vol. 201, pp. 400–413. Springer, Heidelberg (1985)CrossRefGoogle Scholar
  11. 11.
    Krivine, J.L.: A call-by-name lambda-calculus machine. High. Order Symbolic Comput. 20(3), 199–207 (2007)MathSciNetCrossRefzbMATHGoogle Scholar
  12. 12.
    Launchbury, J.: A natural semantics for lazy evaluation. In: POPL, pp. 144–154 (1993)Google Scholar
  13. 13.
    Nakata, K.: Denotational semantics for lazy initialization of letrec: black holes as exceptions rather than divergence. In: 7th Workshop on Fixed Points in Computer Science (2010)Google Scholar
  14. 14.
    Reynolds, J.C.: The Coherence of Languages with Intersection Types. In: Ito, T., Meyer, A.R. (eds.) TACS 1991. LNCS, vol. 526, pp. 675–700. Springer, Heidelberg (1991)CrossRefGoogle Scholar
  15. 15.
    Reynolds, J.C.: Theories of Programming Languages. Cambridge University Press, New York (1999)zbMATHGoogle Scholar
  16. 16.
    Reynolds, J.C.: The Meaning of Types - From Intrinsic to Extrinsic Semantics. Technical report RS-00-32, BRICS, December 2000Google Scholar
  17. 17.
    Sestoft, P.: Deriving a lazy abstract machine. J. Funct. Program. 7(3), 231–264 (1997)MathSciNetCrossRefzbMATHGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.FaMAFUniversidad Nacional de CórdobaCórdobaArgentina

Personalised recommendations