Acta Informatica

, Volume 27, Issue 6, pp 505–517 | Cite as

Referential transparency, definiteness and unfoldability

  • Harald Søndergaard
  • Peter Sestoft
Article

Summary

The term “referential transparency” is frequently used to indicate that a programming language has certain useful substitution properties. We observe, however, that the formal and informal definitions given in the literature are not equivalent and we investigate their relationships. To this end, we study the definitions in the context of a simple expression language and show that in the presence of non-determinism, the differences between the definitions are manifest. We propose a definition of “referential transparency”, based on Quine's, as well as of the related notions: definiteness and unfoldability. We demonstrate that these notions are useful to characterize programming languages.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abelson, H., Sussman, G.J.: Structure and interpretation of computer programs. Cambridge, Mass.: MIT Press 1985Google Scholar
  2. 2.
    Bauer, F.L., Wössner, H.: Algorithmic language and program development. Berlin Heidelberg New York: Springer 1982Google Scholar
  3. 3.
    Bauer, F.L. et al. The Munich project CIP, vol. I: The wide spectrum language CIP-L (Lect. Notes Comput. Sci., vol. 183). Berlin Heidelberg New York: Springer 1985Google Scholar
  4. 4.
    Broy, M.: A theory for nondeterminism, parallelism, communication, and concurrency. Theor. Comput. Sci. 45, 1–61 (1986)Google Scholar
  5. 5.
    Clinger, W.: Nondeterministic call by need is neither lazy nor by name. Proc. 1982 Symp. Lisp Funct. Progr., Pittsburgh, Pennsylvania pp. 226–234, 1982Google Scholar
  6. 6.
    Couturat, L.: Opuscules et fragments inédits de Leibniz. Hildesheim: Georg Olm 1961Google Scholar
  7. 7.
    Frege, G.: Über Sinn und Bedeutung. Z. Philosophie philosophische Kritik 100, 25–50 (1892). English translation in: Geach, P., Black, M. (eds.) Translations from the philosophical writings of Gottlob Frege, pp. 56–78. Oxford: Blackwell 1952Google Scholar
  8. 8.
    Hennessy, M.C.B., Ashcroft, E.A.: Parameter-passing mechanisms and nondeterminism. Proc. Ninth ACM Symp. Theory Comput., pp. 306–311. Boulder, Colorado 1977Google Scholar
  9. 9.
    Hogger, C.J.: Introduction to logic programming. London: Academic Press 1984Google Scholar
  10. 10.
    Horowitz, E.: Fundamentals of programming languages. Berlin Heidelberg New York: Springer 1983Google Scholar
  11. 11.
    Leibniz, G.W.: Nouveaux essais sur l'entendement humain, III, 2. In: Gottfried Wilhelm Leibniz — Sämtliche Schriften und Briefe VI, 6. Berlin (GDR): Akademie-Verlag 1962Google Scholar
  12. 12.
    Quine, W.V.O.: Mathematical logic. New York: Norton 1940Google Scholar
  13. 13.
    Quine, W.V.O.: Reference and modality. In: From a logical point of view, pp. 139–159. Cambridge, Mass.: Harvard University Press 1953Google Scholar
  14. 14.
    Quine, W.V.O.: Word and object. Cambridge, Mass: MIT Press 1960Google Scholar
  15. 15.
    Søndergaard, H., Sestoft, P.: Non-determinism in functional languages. Comput. J. (to appear)Google Scholar
  16. 16.
    Søndergaard, H., Sestoft, P.: Referential transparency and allied notions. University of Copenhagen, Denmark, DIKU Research Report 88/7, 1988Google Scholar
  17. 17.
    Stoy, J.E.: Denotational semantics. Cambridge, Mass.: MIT Press 1977Google Scholar
  18. 18.
    Strachey, C.: Fundamental concepts in programming languages. Int. Summer School in Computer Programming, Copenhagen, Denmark 1967 (unpublished)Google Scholar
  19. 19.
    Waite, W.M., Goos, G.: Compiler construction. Berlin Heidelberg New York: Springer 1984Google Scholar

Copyright information

© Springer-Verlag 1990

Authors and Affiliations

  • Harald Søndergaard
    • 1
  • Peter Sestoft
    • 2
  1. 1.Department of Computer ScienceUniversity of MelbourneParkvilleAustralia
  2. 2.DIKU, University of CopenhagenCopenhagen ØDenmark

Personalised recommendations