Results 1 - 10
of
18
Mixin modules in a call-by-value setting
- In European Symposium on Programming
, 2002
"... Abstract. The ML module system provides powerful parameterization facilities, but lacks the ability to split mutually recursive definitions across modules, and does not provide enough facilities for incremental programming. A promising approach to solve these issues is Ancona and Zucca’s mixin modul ..."
Abstract
-
Cited by 62 (8 self)
- Add to MetaCart
Abstract. The ML module system provides powerful parameterization facilities, but lacks the ability to split mutually recursive definitions across modules, and does not provide enough facilities for incremental programming. A promising approach to solve these issues is Ancona and Zucca’s mixin modules calculus CMS. However, the straightforward way to adapt it to ML fails, because it allows arbitrary recursive definitions to appear at any time, which ML does not support. In this paper, we enrich CMS with a refined type system that controls recursive definitions through the use of dependency graphs. We then develop a separate compilation scheme, directed by dependency graphs, that translate mixin modules down to a CBV λ-calculus extended with a non-standard let rec construct. 1
Recursive Structures for Standard ML
, 2001
"... MLis as tatically typed programming language thatis stwR for the consGHw[URY of boths mall and large programs "Programming in thes mall"is captured by StandardML Core language. "Programming in the large" is captured by Modules language that provides consN1N1N for organisw[ related Core language de ..."
Abstract
-
Cited by 56 (5 self)
- Add to MetaCart
MLis as tatically typed programming language thatis stwR for the consGHw[URY of boths mall and large programs "Programming in thes mall"is captured by StandardML Core language. "Programming in the large" is captured by Modules language that provides consN1N1N for organisw[ related Core language definitions intos elf-contained modules with desAA11w[ e interfaces While the Core is usA to expres details ofalgorithms and data sawRARNw[U Modules is use toexpres the overalla chitecture of asYG wares ysewA In Standard ML, modular programs mus have asANH1Yw hierarchicalslwN---HA1w the dependency between modules can never be cyclic. In particular, definitions of mutuallyrecursA e Core types and values that aris frequently in practice, can neverswN module boundaries This limitation compromisU modular programming, forcing the programmer to merge conceptually (i.e. architecturally) disural modules We prop os a practical and sndwN extensNY of the Modules language thatcaters for cyclic dependencies between both types andterms defined inswHAUYw modules OurdesEH leverages exissH features of the language,s upports stsU---H compilation of mutually recursw e modules and is eas to implement.
Java Type Soundness Revisited
, 2000
"... We present an operational semantics, type system, and a proof of type soundness for a substantial subset of Java. The subset includes interfaces, classes, inheritance, field hiding, method overloading and overriding, arrays with associated dynamic checks, and exception handling. We distinguish betwe ..."
Abstract
-
Cited by 28 (1 self)
- Add to MetaCart
We present an operational semantics, type system, and a proof of type soundness for a substantial subset of Java. The subset includes interfaces, classes, inheritance, field hiding, method overloading and overriding, arrays with associated dynamic checks, and exception handling. We distinguish between normal execution, where no exception is thrown -- or, more precisely, any exception thrown is handled -- and abnormal execution, where an exception is thrown and not handled. The type system distinguishes normal types which describe the possible outcomes of normal execution, and abnormal types which describe the possible outcomes of abnormal execution. The type of a term consists of its normal type and its abnormal type. With this set-up we prove subject reduction. Thus, the meaning of our subject reduction theorem is stronger than usual: it guarantees that normal execution returns a value of a type compatible with the normal type of the term, and that abnormal execution throws an exception ...
Feathertrait: A modest extension of featherweight java
, 2007
"... In the context of statically-typed, class-based languages, we investigate classes that can be extended with trait composition. A trait is a collection of methods without state; it can be viewed as an incomplete stateless class. Traits can be composed in any order, but only make sense when imported b ..."
Abstract
-
Cited by 19 (0 self)
- Add to MetaCart
In the context of statically-typed, class-based languages, we investigate classes that can be extended with trait composition. A trait is a collection of methods without state; it can be viewed as an incomplete stateless class. Traits can be composed in any order, but only make sense when imported by a class that provides state variables and additional methods to disambiguate conflicting names arising between the imported traits. We introduce FeatherTrait Java (FTJ), a conservative extension of the simple lightweight class-based calculus Featherweight Java (FJ) with statically-typed traits. In FTJ, classes can be built using traits as basic behavioral bricks; method conflicts between imported traits must be resolved explicitly by the user either by (i) aliasing or excluding method names in traits, or by (ii) overriding explicitly the conflicting methods in the class or in the trait itself. We present an operational semantics with a lookup algorithm, and a sound type system that guarantees that evaluating a well-typed expression never yields a message-not-understood run-time error nor gets the interpreter stuck. We give examples of the increased expressive power of the trait-based inheritance model. The resulting calculus appears to be a good starting point for a rigorous mathematical analysis of typed class-based languages featuring trait-based inheritance.
Sharing in Typed Module Assembly Language
- In Preliminary Proceedings of the Third Workshop on Types in Compilation (TIC 2000). Carnegie Mellon
, 2000
"... There is a growing need to provide low-overhead softwarebased protection mechanisms to protect against malicious or untrusted code. Type-based approaches such as proof-carrying code and typed assembly language provide this protection by relying on untrusted compilers to certify the safety proper ..."
Abstract
-
Cited by 17 (3 self)
- Add to MetaCart
There is a growing need to provide low-overhead softwarebased protection mechanisms to protect against malicious or untrusted code. Type-based approaches such as proof-carrying code and typed assembly language provide this protection by relying on untrusted compilers to certify the safety properties of machine language programs. Typed Module Assembly Language (TMAL) is an extension of typed assembly language with support for the type-safe manipulation of dynamically linked libraries. A particularly important aspect of TMAL is its support for shared libraries.
Mixin Modules and Computational Effects
, 2003
"... We define a calculus for investigating the interactions between mixin modules and computational effects, by combining the purely functional mixin calculus CMS with a monadic metalanguage supporting the two separate notions of simplification (local rewrite rules) and computation (global evaluation ab ..."
Abstract
-
Cited by 16 (5 self)
- Add to MetaCart
We define a calculus for investigating the interactions between mixin modules and computational effects, by combining the purely functional mixin calculus CMS with a monadic metalanguage supporting the two separate notions of simplification (local rewrite rules) and computation (global evaluation able to modify the store). This distinction is important for smoothly integrating the CMS rules (which are all local) with the rules dealing with the imperative features. In our calculus mixins...
Call-by-value mixin modules: Reduction semantics, side effects, types
- Programming Languages & Systems, 13th European Symp. Programming
, 2004
"... Mixin modules are a framework for modular programming that supports code parameterization, incremental programming via late binding and redefinitions, and cross-module recursion. In this paper, we develop a language of mixin modules that supports call-by-value evaluation, and formalize a reduction ..."
Abstract
-
Cited by 14 (4 self)
- Add to MetaCart
Mixin modules are a framework for modular programming that supports code parameterization, incremental programming via late binding and redefinitions, and cross-module recursion. In this paper, we develop a language of mixin modules that supports call-by-value evaluation, and formalize a reduction semantics and a sound type system for this language.
A Typed Context Calculus
, 2001
"... This paper develops a typed calculus for contexts i.e., lambda terms with "holes". In addition to ordinary lambda terms, the calculus contains labeled holes, hole abstraction and context application for manipulating first-class contexts. The primary operation for contexts is hole-filling, which capt ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
This paper develops a typed calculus for contexts i.e., lambda terms with "holes". In addition to ordinary lambda terms, the calculus contains labeled holes, hole abstraction and context application for manipulating first-class contexts. The primary operation for contexts is hole-filling, which captures free variables. This operation conicts with substitution of the lambda calculus, and a straightforward mixture of the two results in an inconsistent system. We solve this problem by defining a type system that precisely specifies the variable-capturing nature of contexts and that keeps track of bound variable renaming. These mechanisms enable us to define a reduction system that properly integrates beta-reduction and hole-filling. The resulting calculus is Church-Rosser and the type system has the subject reduction property. We believe that the context calculus will serve as a basis for developing a programming language with advanced features that call for manipulation of open terms.
Modular Mixin-Based Inheritance for Application Frameworks
, 2001
"... Mixin modules are proposed as an extension of a class-based programming language. Mixin modules combine parallel extension of classes, including extension of the self types for those classes, with mixin-based inheritance. For soundness of subtyping purposes, they require an explicit distinction betw ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Mixin modules are proposed as an extension of a class-based programming language. Mixin modules combine parallel extension of classes, including extension of the self types for those classes, with mixin-based inheritance. For soundness of subtyping purposes, they require an explicit distinction between mixin-based objects and class-based objects. Applications of mixin modules are in statically type-safe monadbased aspect-oriented programming, and in modular mixinbased Internet programming.

