The original version of this paper appeared as a technical report 15 years ago [28], based on the work carried out at Edinburgh University in the Fall of 1975. The ideas and concepts introduced in this work have been widely referenced and have become the basis for a significant body of foundational research on semantics of programming languages. The purpose of this introduction is to sketch the background for this research and to mention briefly some of this later work, thus placing the paper in context. Christopher Strachey’s [40] work on the formal description of programming language concepts raised problems concerning the nature and existence of semantic models for /2-calculi. Dana Scott developed a theory of domains and continuous functions that established adequate mathematical foundations for Strachey’s semantic descriptions and formed the basis for the denotational approach to semantics, ad- vocated in [37] and later applied to a wide variety of programming languages [39,34,42,24]. Semantic domains were typically taken to be complete lattices [38] or more general kinds of complete partial order [38, 251, the precise combination of order-theoretic assumptions being chosen to suit the application and often justified by appealing to intuitive arguments concerning computability. A good survey of domain theory is provided in [24]. However, these semantic treatments typically make no intrinsic distinction between domains used to represent data and domains used to represent procedures or func- tions. For certain purposes it seems appropriate to make such distinctions: for