Results 1 -
9 of
9
PolyTOIL: A type-safe polymorphic object-oriented language
, 1995
"... PolyTOIL is a new statically-typed polymorphic object-oriented programming language that is provably type-safe. By separating the de nitions of subtyping and inheritance, providing a name for the type of self, and carefully de ning the type-checking rules, we have obtained a language that is ve ..."
Abstract
-
Cited by 135 (10 self)
- Add to MetaCart
PolyTOIL is a new statically-typed polymorphic object-oriented programming language that is provably type-safe. By separating the de nitions of subtyping and inheritance, providing a name for the type of self, and carefully de ning the type-checking rules, we have obtained a language that is very expressive while supporting modular type-checking of classes. The matching relation on types, which is related to F-bounded quanti cation, is used both in stating type-checking rules and expressing the bounds on type parameters for polymorphism. The design of PolyTOIL is based on a careful formal de nition of type-checking rules and semantics.
A Paradigmatic Object-Oriented Programming Language: Design, Static Typing and Semantics
- Journal of Functional Programming
, 1993
"... In order to illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and in ..."
Abstract
-
Cited by 110 (9 self)
- Add to MetaCart
In order to illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and inheritance. It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking object-oriented languages is designing type-checking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The type-checking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. In order to achieve greater expressibility while retaining type-safety, we choose to separate the inheritance and subtyping hierarchy in the language. The design of...
Typed Intermediate Representations for Compiling Object-Oriented Languages
- 178 - Modularization of XHTML H.1.3. Ease of Use
, 1999
"... In the past few years a large body of work has developed on the use of typed intermediate languages in compilers. It has become apparent that the retention of type information in the intermediate representation of a program is useful for ensuring compiler correctness and facilitating optimizations. ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
In the past few years a large body of work has developed on the use of typed intermediate languages in compilers. It has become apparent that the retention of type information in the intermediate representation of a program is useful for ensuring compiler correctness and facilitating optimizations. The use of intermediate languages resembling typed -calculus in the compilation of functional languages like ML and Haskell has been particularly successful, but not much has been done on using this kind of intermediate format for non-functional languages. Meanwhile, TOOPL, TOIL and LOOM have been developed as object-oriented programming languages with static type-safety and semantic foundations firmly in mind. Encodings for the object and class constructs of these languages in -calculus are known, and consideration of these encodings has proved fruitful in their design and implementation. In this thesis, our intention is to exploit the work on the semantic foundations of objectoriented la...
Parametric Polymorphism in a Type-Safe, Object-Oriented Programming Language
"... This thesis describes the language PolyTOIL, a type-safe, polymorphic, object-oriented programming language. PolyTOIL is an extension of the object-oriented language TOIL, also developed at Williams College. The extensions to TOIL include support for bounded and unbounded parametric polymorphism. It ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
This thesis describes the language PolyTOIL, a type-safe, polymorphic, object-oriented programming language. PolyTOIL is an extension of the object-oriented language TOIL, also developed at Williams College. The extensions to TOIL include support for bounded and unbounded parametric polymorphism. It is relatively unusual in using a "matching" relationship rather than subtyping to determine constraints on type arguments. Subtype polymorphism (through substitution) and inheritance are also features, though the subtype and inheritance hierarchies are not identified. A PolyTOIL interpreter has been implemented in ML and can be used to run PolyTOIL programs. Contents 1 Introduction 1 2 The Object-Oriented Paradigm 3 3 Polymorphism 8 3.1 Implicit and Explicit Polymorphism . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Subtyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Unconstrained Genericity . . . . . . . . . . . . . . . . . . . . . . . . . . . ....
Foundations of Object-Oriented Languages - Workshop Report
- ACM SIGPLAN Not
, 1994
"... Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations. In an ADT, abstraction ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations. In an ADT, abstraction is achieved by hiding the type of the representation. This hiding is often modeled using an existential quantifier. In OOLs, abstraction is achieved by letting the operations themselves represent the data. The interfaces of the operations need not have any direct relation to the underlying representation at all. One of the consequences of the above is that in an ADT, recursion is seldomly needed in the interface (although it may well be used in the representation). In OOLs, recursion is often essential to the interface. Thus, recursion should be central in models of OOLs. Dinesh Katiyar: Interfaces and typed OOP. Katiyar presented a type system featuring bounded existential quantification...
Formal Analysis of Type rules and Semantics
- In Proceedings OOPSLA'95 Revised: January 9
, 1995
"... This thesis presents a formal analysis of the core of C++, the method binding mechanism. The analysis will include features such as inheritance, overloading, overriding, hiding, and conversions. Our model will clearly explain method binding under all these features, without the ambiguity that colloq ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
This thesis presents a formal analysis of the core of C++, the method binding mechanism. The analysis will include features such as inheritance, overloading, overriding, hiding, and conversions. Our model will clearly explain method binding under all these features, without the ambiguity that colloquial descriptions can introduce. Many of the intricacies of our formal model will demonstrate that the informal descriptions used to explain the language are not sophisticated enough to explain certain examples. The type rules and operational semantics we present should provide the basis for a more accurate conceptual model of the language. Contents 1 Background 5 1.1 Programming Languages: Between Industry and Research : : : : 5 1.2 The Object-Oriented Paradigm : : : : : : : : : : : : : : : : : : : 6 1.3 The Demand for Object-Oriented Methodology : : : : : : : : : : 7 1.4 The Birth of C++ : : : : : : : : : : : : : : : : : : : : : : : : : : 7 1.4.1 In the Beginning: Abstraction, Encapsulat...
A Module System for LOOM
- Williams College Senior Honors Thesis
, 1997
"... A strong module system is a very important language tool for developing software systems. Classes alone do not allow for sufficient levels of abstraction and separate compilation. Modules can be very helpful in organizing code, providing abstraction, and supporting separate compilation. Abstraction ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
A strong module system is a very important language tool for developing software systems. Classes alone do not allow for sufficient levels of abstraction and separate compilation. Modules can be very helpful in organizing code, providing abstraction, and supporting separate compilation. Abstraction makes it difficult to share types between modules, but transparent types can propagate too much information to allow separate compilation. The use of partially abstract types and manifest types can help to avoid these problems. Earlier work by Robert van Gent and Angela Schuett under the direction of Professor Kim Bruce resulted in the design and implementation of the language PolyTOIL, a type safe object-oriented language with strong polymorphic features. LOOM is a direct descendant of PolyTOIL which omits subtyping in favor of a more flexible version of matching, including matching-based subsumption. We give an overview of LOOM and of a prototype interpreter for the language. Proofs of th...
Foundations of Object-Oriented Languages
- ACM SIGPLAN Not
, 1994
"... Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations. In an ADT, abstraction ..."
Abstract
- Add to MetaCart
Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations. In an ADT, abstraction is achieved by hiding the type of the representation. This hiding is often modeled using an existential quantifier. In OOLs, abstraction is achieved by letting the operations themselves represent the data. The interfaces of the operations need not have any direct relation to the underlying representation at all. One of the consequences of the above is that in an ADT, recursion is seldomly needed in the interface (although it may well be used in the representation). In OOLs, recursion is often essential to the interface. Thus, recursion should be central in models of OOLs. Dinesh Katiyar: Interfaces and typed OOP. Katiyar presented a type system featuring bounded existential quantification...
Foundations of Object-Oriented Languages
- ACM SIGPLAN Not
, 1994
"... Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations. ..."
Abstract
- Add to MetaCart
Data Types (ADTs) and objects in ObjectOriented Languages (OOLs) [9]. He argued that although both are based on the idea of data abstraction, they are fundamentally different. In short, an ADT may be understood as a set with operations, whereas objects are sets of operations.

