Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where John C. Reynolds is active.

Publication


Featured researches published by John C. Reynolds.


ALGOL-like Languages, Volume 1 | 1997

The essence of ALGOL

John C. Reynolds

Although Algol 60 has been uniquely influential in programming language design, its descendants have been significantly different than their prototype. In this paper, we enumerate the principles that we believe embody the essence of Algol, describe a model that satisfies these principles, and illustrate this model with a language that, while more uniform and general, retains the character of Algol.


symposium on principles of programming languages | 1978

Syntactic control of interference

John C. Reynolds

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.


symposium on principles of programming languages | 2004

Separation and information hiding

Peter W. O'Hearn; Hongseok Yang; John C. Reynolds

We investigate proof rules for information hiding, using the recent formalism of separation logic. In essence, we use the separating conjunction to partition the internal resources of a module from those accessed by the modules clients. The use of a logical connective gives rise to a form of dynamic partitioning, where we track the transfer of ownership of portions of heap storage between program components. It also enables us to enforce separation in the presence of mutable data structures with embedded addresses that may be aliased.


Higher-order and Symbolic Computation \/ Lisp and Symbolic Computation | 1993

The discoveries of continuations

John C. Reynolds

We give a brief account of the discoveries of continuations and related concepts by A. van Wijngaarden, A. W. Mazurkiewicz, F. L. Morris, C. P. Wadsworth, J. H. Morris, M. J. Fischer, and S. K. Abdali.


Communications of The ACM | 1970

GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept

John C. Reynolds

GEDANKEN is an experimental programming language with the following characteristics. (1) Any value which is permitted in some context of the language is permissible in any other meaningful context. In particular, functions and labels are permissible results of functions and values of variables. (2) Assignment and indirect addressing are formalized by introducing values, called references, which in turn possess other values. The assignment operation always affects the relation between some reference and its value. (3) All compound data structures are treated as functions. (4) Type declarations are not permitted. The functional approach to data structures and the use of references insure that any process which accepts some data structure will accept any logically equivalent structure, regardless of its internal representation. More generally, any data structure may be implicit; i.e. it may be specified by giving an arbitrary algorithm for computing or accessing its components. The existence of label variables permits the construction of co-routines, quasi-parallel processes, and other unorthodox control mechanisms. A variety of programming examples illustrates the generality of the language. Limitations and possible extensions are discussed briefly.


international symposium on semantics of data types | 1984

Polymorphism is not set-theoretic

John C. Reynolds

The polymorphic, or second-order, typed lambda calculus is an extension of the typed lambda calculus in which polymorphic functions can be defined. In this paper, we will prove that the standard set-theoretic model of the ordinary typed lambda calculus cannot be extended to model this language extension.


international colloquium on automata, languages and programming | 1974

On the Relation between Direct and Continuation Semantics

John C. Reynolds

The use of continuations in the definition of programming languages has gained considerable currency recently, particularly in conjunction with the lattice-theoretic methods of D. Scott. Although continuations are apparently needed to provide a mathematical semantics for non-applicative control features, they are unnecessary for the definition of a purely applicative language, even when call-by-value occurs. This raises the question of the relationship between the direct and the continuation semantic functions for a purely applicative language. We give two theorems which specify this relationship and show that, in a precise sense, direct semantics are included in continuation semantics.


colloquium on trees in algebra and programming | 1985

Three Approaches to Type Structure

John C. Reynolds

We examine three disparate views of the type structure of programming languages: Milners type deduction system and polymorphic let construct, the theory of subtypes and generic operators, and the polymorphic or second-order typed lambda calculus. These approaches are illustrated with a functional language including product, sum and list constructors. The syntactic behavior of types is formalized with type inference rules, but their semantics is treated intuitively.


compiler construction | 1980

Using category theory to design implicit conversions and generic operators

John C. Reynolds

A generalization of many-sorted algebras, called category-sorted algebras, is defined and applied to the language-design problem of avoiding anomalies in the interaction of implicit conversions and generic operators. The definition of a simple imperative language (without any binding mechanisms) is used as an example.


international conference on mathematical foundations of programming semantics | 1991

Types, Abstractions, and Parametric Polymorphism, Part 2

QingMing Ma; John C. Reynolds

The concept of relations over sets is generalized to relations over an arbitrary category, and used to investigate the abstraction (or logical-relations) theorem, the identity extension lemma, and parametric polymorphism, for Cartesian-closed-category models of the simply typed lambda calculus and PL-category models of the polymorphic typed lambda calculus. Treatments of Kripke relations and of complete relations on domains are included.

Collaboration


Dive into the John C. Reynolds's collaboration.

Top Co-Authors

Avatar

Peter W. O'Hearn

Queen Mary University of London

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jonathan Aldrich

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

W. F. Miller

Argonne National Laboratory

View shared research outputs
Top Co-Authors

Avatar

William J. Snow

Argonne National Laboratory

View shared research outputs
Top Co-Authors

Avatar

Noah Torp-Smith

IT University of Copenhagen

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

QingMing Ma

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Robert D. Puff

University of Washington

View shared research outputs
Researchain Logo
Decentralizing Knowledge