Results 1 - 10
of
13
Modular typechecking for hierarchically extensible datatypes and functions
- In Proceedings of the International Conference on Functional Programming
, 2002
"... One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so that datatype variants simulate classes and function cases simulate methods. This approach allows exi ..."
Abstract
-
Cited by 30 (5 self)
- Add to MetaCart
One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so that datatype variants simulate classes and function cases simulate methods. This approach allows existing datatypes to be easily extended with both new operations and new variants, resolving a longstanding conflict between the functional and OO styles. However, previous designs based on this approach have been forced to give up modular typechecking, requiring whole-program checks to ensure type safety. We describe Extensible ML (EML), an ML-like language that supports hierarchical, extensible datatypes and functions while preserving purely modular typechecking. To achieve this result, EML’s type system imposes a few requirements on datatype and function extensibility, but EML is still able to express both traditional functional and OO idioms. We have formalized a core version of EML and proven the associated type system sound, and we have developed a prototype
Type-safe prototype-based component evolution
- Proceedings ECOOP 2002, volume 2374 of LNCS
, 2002
"... Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the ..."
Abstract
-
Cited by 30 (6 self)
- Add to MetaCart
Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the programming language level. We propose a simple prototype-based model for first-class components on top of a class-based object-oriented language. The model is formalized as an extension of Featherweight Java. Our calculus includes a minimal set of primitives to dynamically build, extend, and compose software components, while supporting features like explicit context dependencies, late composition, unanticipated component extensibility, and strong encapsulation. We present a type system for our calculus that ensures type-safe component definition, composition, and evolution.
Evolving Software with Extensible Modules
, 2002
"... We present the programming language Keris, an extension of Java with explicit support for software evolution. Keris introduces extensible modules as the basic building blocks for software. Modules are composed hierarchically revealing explicitly the architecture of systems. A distinct feature of the ..."
Abstract
-
Cited by 18 (2 self)
- Add to MetaCart
We present the programming language Keris, an extension of Java with explicit support for software evolution. Keris introduces extensible modules as the basic building blocks for software. Modules are composed hierarchically revealing explicitly the architecture of systems. A distinct feature of the module design is that modules do not get linked manually. Instead, the wiring of modules gets infered. The module assembly and refinement mechanism of Keris is not restricted to the unanticipated extensibility of atomic modules. It also allows to extend fully linked systems by replacing selected submodules with compatible versions without needing to re-link the full system. Extensibility is type-safe and non-invasive; i.e. the extension of a module preserves the original version and does not require access to source code.
Stronger Typings for Separate Compilation of Java-like Languages
- In 5th Intl. Workshop on Formal Techniques for Java Programs
, 2003
"... We define a formal system supporting separate compilation for a small but significant Java-like language. ..."
Abstract
-
Cited by 10 (6 self)
- Add to MetaCart
We define a formal system supporting separate compilation for a small but significant Java-like language.
Smart Modules for Java-like Languages
- IN 7TH INTL. WORKSHOP ON FORMAL TECHNIQUES FOR JAVA-LIKE PROGRAMS
, 2004
"... We present SmartJavaMod, a language of mixin modules constructed on top of the Java language supporting compositional compilation. More in detail, ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
We present SmartJavaMod, a language of mixin modules constructed on top of the Java language supporting compositional compilation. More in detail,
A Core Calculus of Higher-Order Mixins and Classes
- In Proc. of TYPES ’03, LNCS
"... Lorenzo Bettini Viviana Bono Silvia Likavec Dipartimento di Sistemi ed Informatica, Universit a di Firenze, bettini@dsi.unifi.it Dipartimento di Informatica, Universit a di Torino,{bono,likavec}@di.unito.it ABSTRACT We present an object-oriented calculus based on higher-order mixin con ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
Lorenzo Bettini Viviana Bono Silvia Likavec Dipartimento di Sistemi ed Informatica, Universit a di Firenze, bettini@dsi.unifi.it Dipartimento di Informatica, Universit a di Torino,{bono,likavec}@di.unito.it ABSTRACT We present an object-oriented calculus based on higher-order mixin construction via mixin composition, where some software engineering requirements are modelled in a formal setting, allowing to prove the absence of message-not-understood run-time errors.
Recursive object-oriented modules
- In Proc. FOOL 12
, 2005
"... Abstract. Classes and ML-style modules are complementary. The former are better at extension, the latter at abstraction. We propose an object-oriented calculus based on a nominal module system with mutual recursion. Our calculus is kept simple by using the same construct for modules, functors, signa ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
Abstract. Classes and ML-style modules are complementary. The former are better at extension, the latter at abstraction. We propose an object-oriented calculus based on a nominal module system with mutual recursion. Our calculus is kept simple by using the same construct for modules, functors, signatures and classes. Static guarantee of safety properties turns out to be a non trivial problem in this system, as cyclic dependencies might exist. We define a decidable type system, which ensures that module definitions are well-founded, and a call-by-value semantics, for which type soundness is proved. 1
Analyzing module diversity
- JOURNAL OF UNIVERSAL COMPUTER SCIENCE
, 2005
"... Each object-oriented programming language proposes various grouping mechanisms to bundle interacting classes (i.e., packages, modules, selector namespaces, etc). To understand this diversity and to compare the different approaches, a common foundation is needed. In this paper we present a simple mo ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
Each object-oriented programming language proposes various grouping mechanisms to bundle interacting classes (i.e., packages, modules, selector namespaces, etc). To understand this diversity and to compare the different approaches, a common foundation is needed. In this paper we present a simple module calculus consisting of a small set of operators over environments and modules. Using these operators, we are then able to specify a set of module combinators that capture the semantics of Java packages, C# namespaces, Ruby modules, selector namespaces, gbeta classes, classboxes, MZScheme units, and MixJuice modules. We develop a simple taxonomy of module systems, and show how particular combinations of module operators help us to draw sharp distinctions between classes of module systems that share similar characteristics.
Flexible type-safe linking of components for Java-like languages
- in: JMLC’06 - Joint Modular Languages Conference, Lecture Notes in Computer Science
, 2006
"... Abstract. We define a framework of components based on Java-like languages, where components are binary mixin modules. Basic components can be obtained from a collection of classes by compiling such classes in isolation; for allowing that, requirements in the form of type constraints are associated ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Abstract. We define a framework of components based on Java-like languages, where components are binary mixin modules. Basic components can be obtained from a collection of classes by compiling such classes in isolation; for allowing that, requirements in the form of type constraints are associated with each class. Requirements are specified by the user who, however, is assisted by the compiler which can generate missing constraints essential to guarantee type safety. Basic components can be composed together by using a set of expressive typed operators; thanks to soundness results, such a composition is always type safe. The framework is designed as a separate layer which can be instantiated on top of any Java-like language; a prototype implementation is available for a small Java subset. Besides safety, the approach achieves great flexibility in reusing components for two reasons: (1) type constraints generated for a single component exactly capture all possible contexts where it can be safely used; (2) composition of components is not limited to conventional linking, but is achieved by means of a set of powerful operators typical of mixin modules. 1

