The definition of Standard ML
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for prototyping languages
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for records in natural extension of ML
Theoretical aspects of object-oriented programming
The design and evolution of C++
The design and evolution of C++
The development of type systems for object-oriented languages
Theory and Practice of Object Systems - Special issue: type systems
Theory and Practice of Object Systems - Special issue: type systems
Simple objects for Standard ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Objective ML: an effective object-oriented extension to ML
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Information and Computation - FOOL V
A Theory of Objects
The Java Language Specification
The Java Language Specification
Import is Not Inheritance - Why We Need Both: Modules and Classes
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Type systems for object-oriented programming languages
Type systems for object-oriented programming languages
Interlanguage working without tears: blending SML with Java
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type dispatch for named hierarchical types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Representing Java classes in a typed intermediate language
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Combining subsumption and binary methods: an object calculus with views
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Jiazzi: new-age components for old-fasioned Java
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-preserving compilation of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
An interoperable calculus for external object access
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Modular typechecking for hierarchically extensible datatypes and functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Type-Safe linking with recursive DLLs and shared libraries
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information and Computation - FOOL VII
Optimizing Nested Loops Using Local CPS Conversion
Higher-Order and Symbolic Computation
A Calculus for Compiling and Linking Classes
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Extending Moby with Inheritance-Based Subtyping
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
True Modules for Java-like Languages
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Using, Understanding, and Unraveling the OCaml Language. From Practice to Theory and Vice Versa
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Jam---designing a Java extension with mixins
ACM Transactions on Programming Languages and Systems (TOPLAS)
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Journal of Functional Programming
Modular typechecking for hierarchically extensible datatypes and functions
ACM Transactions on Programming Languages and Systems (TOPLAS)
An expressive language of signatures
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
BOTS: a constraint-based component system for synthesizing scalable software systems
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Application-specific foreign-interface generation
Proceedings of the 5th international conference on Generative programming and component engineering
Specialization of CML message-passing primitives
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Integrating Nominal and Structural Subtyping
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Masked types for sound object initialization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Is Structural Subtyping Useful? An Empirical Study
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Information hiding in the join calculus
ASIAN'06 Proceedings of the 11th Asian computing science conference on Advances in computer science: secure software and related issues
Typed compilation against non-manifest base classes
CASSIS'05 Proceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
A framework for modular linking in OO languages
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Parameterized modules for classes and extensible functions
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Private row types: abstracting the unnamed
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Euro-Par'12 Proceedings of the 18th international conference on Parallel Processing
Hi-index | 0.00 |
Typical class-based languages, such as C++ and JAVA, provide complex class mechanisms but only weak module systems. In fact, classes in these languages incorporate many of the features found in richer module mechanisms. In this paper, we describe an alternative approach to designing a language that has both classes and modules. In our design, we rely on a rich ML-style module system to provide features such as visibility control and parameterization, while providing a minimal class mechanism that includes only those features needed to support inheritance. Programmers can then use the combination of modules and classes to implement the full range of class-based features and idioms. Our approach has the advantage that it provides a full-featured module system (useful in its own right), while keeping the class mechanism quite simple.We have incorporated this design in MOBY, which is an ML-style language that supports class-based object-oriented programming. In this paper, we describe our design via a series of simple examples, show how various class-based features and idioms are realized in MOBY, compare our design with others, and sketch its formal semantics.