Results 1 -
5 of
5
On understanding types, data abstraction, and polymorphism
- ACM COMPUTING SURVEYS
, 1985
"... Our objective is to understand the notion of type in programming languages, present a model of typed, polymorphic programming languages that reflects recent research in type theory, and examine the relevance of recent research to the design of practical programming languages. Object-oriented languag ..."
Abstract
-
Cited by 727 (14 self)
- Add to MetaCart
Our objective is to understand the notion of type in programming languages, present a model of typed, polymorphic programming languages that reflects recent research in type theory, and examine the relevance of recent research to the design of practical programming languages. Object-oriented languages provide both a framework and a motivation for exploring the interaction among the concepts of type, data abstraction, and polymorphism, since they extend the notion of type to data abstraction and since type inheritance is an important form of polymorphism. We develop a λ-calculus-based model for type systems that allows us to explore these interactions in a simple setting, unencumbered by complexities of production programming languages. The evolution of languages from untyped universes to monomorphic and then polymorphic type systems is reviewed. Mechanisms for polymorphism such as overloading, coercion, subtyping, and parameterization are examined. A unifying framework for polymorphic type systems is developed in terms of the typed λ-calculus augmented to include binding of types by quantification as well as binding of values by abstraction. The typed λ-calculus is augmented by universal quantification to model generic functions with type parameters, existential quantification and packaging (information hiding) to model abstract data types, and
Types and Polymorphism in Persistent Programming Systems
, 1990
"... In a type secure persistent programming system, all data is governed for its entire lifetime by a single type system. The universality of the persistent type system has implications in terms of both the modelling and protection provided by the type system itself, and also presents some new challenge ..."
Abstract
-
Cited by 21 (8 self)
- Add to MetaCart
In a type secure persistent programming system, all data is governed for its entire lifetime by a single type system. The universality of the persistent type system has implications in terms of both the modelling and protection provided by the type system itself, and also presents some new challenges in terms of implementation. With respect to modelling, the persistent type system must be sufficiently flexible to allow the modelling of activities normally provided by untyped support systems. Such activities include, for example, the linking of separately prepared program units, and file system access protection. Methods of achieving such flexibility whilst maximising safety include the controlled use of infinite unions, parametric and inclusion polymorphism. With respect to protection, the increased role of a type system means that any protection mechanisms programmed at a high level may be fully relied upon to protect the data for its lifetime, as access from outside the constraints...
Non-Strict Languages - Programming and Implementation
, 1994
"... Non-strict evaluation improves the expressive power of functional languages at the expense of an apparent loss of efficiency. In this paper we give examples of this expressive power, taking as an example an interactive functional program and describing the programming techniques depending on non-str ..."
Abstract
-
Cited by 19 (0 self)
- Add to MetaCart
Non-strict evaluation improves the expressive power of functional languages at the expense of an apparent loss of efficiency. In this paper we give examples of this expressive power, taking as an example an interactive functional program and describing the programming techniques depending on non-strict evaluation which improved its design. Implementation methods for non-strict languages have delivered poor performance precisely when such programming techniques have been used. This need not be the case, however, and in the second part of the paper we describe Tim, a method of implementing non-strict languages for which the penalty for using lazy evaluation is very small. 1 Introduction Effort in the functional programming community is today divided into two main activities: making efficient implementations of functional languages and exploiting the expressive power of these languages by writing elegant programs. To a large extent these activities are carried out by separate groups of p...
Developments in Object-Oriented Type Systems
, 1994
"... data types are employed in [86, 85]; their relation to classes is discussed earlier in [31]. Large languages are presented in [13, 11]. Slide 86 Type inference for simple subtyping is developed in [69, 102, 59, 74, 105, 55, 104]. Slide 88--94 Class inference is developed in [101, 45, 79, 76, 4]. Sli ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
data types are employed in [86, 85]; their relation to classes is discussed earlier in [31]. Large languages are presented in [13, 11]. Slide 86 Type inference for simple subtyping is developed in [69, 102, 59, 74, 105, 55, 104]. Slide 88--94 Class inference is developed in [101, 45, 79, 76, 4]. Slide 96 ML modules are described in [67, 106]. Slide 97 Approaches to genericity are discussed in [63, 49, 61, 73, 83]. Annotated Bibliography 104 Slide 98 Multi-methods are presented in [53, 72, 24, 25]. Slide 99 The Self language is described in [108, 26, 27, 28, 48, 3]. References ...

