Results 1 -
6 of
6
Subtyping is not a good "match" for object-oriented languages
- PROC. ECOOP '97
, 1997
"... We present the design and rationale of a new statically-typed object-oriented language, LOOM. LOOM retains most of the features of the earlier language PolyTOIL. However the subtyping relation is dropped from LOOM in favor of the matching relation. "Hash types", which are defined in terms of matchi ..."
Abstract
-
Cited by 42 (4 self)
- Add to MetaCart
We present the design and rationale of a new statically-typed object-oriented language, LOOM. LOOM retains most of the features of the earlier language PolyTOIL. However the subtyping relation is dropped from LOOM in favor of the matching relation. "Hash types", which are defined in terms of matching, are introduced to provide some of the bene ts of subtyping. These types can be used to provide support for heterogeneous data stuctures in LOOM. LOOM is considerably simpler than PolyTOIL, yet is just as expressive. The type system for the language is decidable and provably type safe. The addition of modules to the language provides better control over information hiding and allows the provision of access like that of C++'s friends.
Subtyping is not a good "Match" for object-oriented languages
, 1997
"... . We present the design and rationale of a new statically-typed object-oriented language, LOOM. LOOM retains most of the features of the earlier language PolyTOIL. However the subtyping relation is dropped from LOOM in favor of the matching relation. "Hash types", which are defined in terms of match ..."
Abstract
-
Cited by 30 (9 self)
- Add to MetaCart
. We present the design and rationale of a new statically-typed object-oriented language, LOOM. LOOM retains most of the features of the earlier language PolyTOIL. However the subtyping relation is dropped from LOOM in favor of the matching relation. "Hash types", which are defined in terms of matching, are introduced to provide some of the benefits of subtyping. These types can be used to provide support for heterogeneous data stuctures in LOOM. LOOM is considerably simpler than PolyTOIL, yet is just as expressive. The type system for the language is decidable and provably type safe. The addition of modules to the language provides better control over information hiding and allows the provision of access like that of C++'s friends. 1 Introduction Most statically-typed object-oriented programming languages, including C++ [ES90], Java [AG96], Object Pascal [Tes85], and Modula 3 [CDG + 88], suffer from very rigid type systems which can block the easy expression of programmers ' ideas,...
Typing in object-oriented languages: Achieving expressiveness and safety
- Computing Surveys
, 1996
"... While simple static-typing disciplines exist for object-oriented languages like C++, Java, and Object Pascal, they are often so inflexible that programmers are forced to use type casts to get around the restrictions. At the other extreme are languages like Beta and Eiffel, which allow more freedom, ..."
Abstract
-
Cited by 29 (1 self)
- Add to MetaCart
While simple static-typing disciplines exist for object-oriented languages like C++, Java, and Object Pascal, they are often so inflexible that programmers are forced to use type casts to get around the restrictions. At the other extreme are languages like Beta and Eiffel, which allow more freedom, but require run-time or link-time checking to pick up the type errors that their type systems are unable to detect at compile time. This paper presents a collection of sample programs which illustrate problems with existing type systems, and suggests ways of improving the expressiveness of these systems while retaining static type safety. In particular we will discuss the motivations behind introducing "MyType", "matching", and "match-bounded polymorphism" into these type systems. We also suggest a way of simplifying the resulting type system by replacing subtyping by a type system with a new type construct based on matching. Both systems provide for binary methods, which are often difficult...
Rupiah: An extension to Java supporting match-bounded parametric polymorphism, ThisType, and exact typing
- Undergraduate Thesis in Computer Science
, 1998
"... The programming language Java [AG96] has gained widespread acceptance throughout the computer industry. Java's type system, though, is lacking in flexibility. This lack of flexibility limits the expressiveness of the language, especially for the creation of container classes. To improve Java's expr ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
The programming language Java [AG96] has gained widespread acceptance throughout the computer industry. Java's type system, though, is lacking in flexibility. This lack of flexibility limits the expressiveness of the language, especially for the creation of container classes. To improve Java's expressiveness, we extend its type system through the addition of three constructs: match-bounded parametric polymorphism, ThisType, and exact typing. These constructs allow a programmer to write flexible, extensible, and statically type-safe code. Our current implementation targets the standard Java Virtual Machine through a source-level translation. Translation allows Rupiah programs to be run on existing Java installations, but carries with it a performance cost. We conclude with a comparison of our language changes and implementation and other proposals for extended Java. Contents 1 Introduction 1 1.1 Outline of the thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2...
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...
Modules in LOOM: Classes are not enough
, 1998
"... Pure object-oriented languages have tended to assume that classes can take the place of modules in programming in the large. We argue that modules are still needed in these languages and present the design of a module construct for our language LOOM which works well with the object-oriented paradigm ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Pure object-oriented languages have tended to assume that classes can take the place of modules in programming in the large. We argue that modules are still needed in these languages and present the design of a module construct for our language LOOM which works well with the object-oriented paradigm. We discuss and illustrate the advantages of these modules over a class-only approach. In particular we illustrate the advantages of modules in supporting better control over information hiding, including the support of access like C++'s friends. Research paper: language design 1 Introduction As programmers and language designers have gotten more experience with object-oriented languages, it has become clearer that class boundaries are not always the correct abstraction layer for large programs. Interestingly it is the hybrid languages which have grown from ADT-style languages which have often provided the best support for modularity. Thus Ada 95 [Int95] and Modula-3 [CDG + 88] have int...

