Syntactic Control of Interference

  • John C. Reynolds
Part of the Progress in Theoretical Computer Science book series (PTCS)


In programming languages which permit both assignment and procedures, distinct identifiers can represent data structures which share storage or procedures with interfering side effects. In addition to being a direct source of programming errors, this phenomenon, which we call interference, can impact type structure and parallelism. We show how to eliminate these difficulties by imposing syntactic restrictions, without prohibiting the kind of constructive interference which occurs with higher-order procedures or Simula classes. The basic idea is to prohibit interference between identifiers, but to permit interference among components of collections named by single identifiers.


Reduction Rule Program Type Class Element Type Integer Passive Procedure 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Wirth, N. The programming language PASCAL. Acta Informatica 1 (1971), pp. 3 5 - 63.MATHCrossRefGoogle Scholar
  2. [2]
    van Wijngaarden, A. (ed.), Mailloux, B. J., Peck, J. E. L., and Koster, C. H. A. Report on the Algorithmic Language ALGOL 68. MR 101, Mathematisch Centrum, Amsterdam, February 1969.Google Scholar
  3. [3]
    Hoare, C. A. R. Towards a theory of parallel programming. In Operating Systems Techniques (eds. C. A. R. Hoare and R. N. Perrott), Academic Press, New York, 1972, pp. 61–71.Google Scholar
  4. [4]
    Hoare, C. A. R. Monitors: an operating system structuring concept. Communications of the ACM 17 (October 1974), pp. 549–557.Google Scholar
  5. [5]
    Brinch Hansen, P. Structured multiprogramming. Communications of the ACM 15 (July 1972), pp. 574–577.Google Scholar
  6. [6]
    Hoare, C. A. R. Procedures and parameters: an axiomatic approach. In Symposium on the Semantics of Algorithmic Languages (ed. E. Engeler). Springer, Berlin- Heidelberg-New York, 1971, pp. 102–116.Google Scholar
  7. [7]
    Popek, G. J., Horning, J. J., Lampson, B. W., Mitchell, J. G., and London, R. L. Notes on the design of EUCLID. In Proceedings of an ACM Conference on Language Design for Reliable Software, SIGPLAN Notices 12, no. 3 (March 1977), pp. 11–18.Google Scholar
  8. [8]
    Dahl, O.–J. and Hoare, C. A. R. Hierarchical program structures. In Structured Programming (O.-J. Dahl, E. W. Dijkstra, and C. A. R. Hoare), Academic Press, New York 1972, pp. 175–200.Google Scholar
  9. [9]
    Curry, H. B., and Feys, R. Combinatory Logic, vol. 1. North-Holland, Amsterdam 1958.MATHGoogle Scholar
  10. [10]
    Landin, P. J. A correspondence between ALGOL 60 and Church’s lambda notation. Communications of the ACM 8 (February and March 1965), pp. 89–101 and 158–165.Google Scholar
  11. [11]
    Henderson, P., and Morris, Jr., J. H. A lazy evaluator. In Conference Record of the Third Annual ACM Symposium on Principles of Programming Languages, Atlanta, Georgia, January 1976. ACM, New York, 1976, pp. 95–103.Google Scholar
  12. [12]
    Friedman, D. P., and Wise, D. S. CONS should not evaluate its arguments. In Third Int’l Colloquium on Automata, Languages, and Programming (eds. S. Michaelson and R. Milner), Edinburgh, Scotland, July 1976. Edinburgh University Press, Edinburgh, 1976, pp. 257–284.Google Scholar
  13. [13]
    Hoare, C. A. R. Proof of correctness of data representations. Acta Informatica 1 (1972), pp. 271–281.MATHCrossRefGoogle Scholar
  14. [14]
    Reynolds, J. C. User-defined types and procedural data structures as complementary approaches to data abstraction. In New Directions in Algorithmic Languages 1975 (ed. S. A. Schuman). INRIA, Rocquencourt, France, 1975, pp. 157–168.Google Scholar

Copyright information

© Birkhäuser Boston 1997

Authors and Affiliations

  • John C. Reynolds

There are no affiliations available

Personalised recommendations