Results 1  10
of
12
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 18 (6 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...
An abstract monadic semantics for value recursion
 In Proceeding of the 2003 Workshop on Fixed Points in Computer Science (FICS
, 2003
"... This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Sch ..."
Abstract

Cited by 18 (7 self)
 Add to MetaCart
This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Scheme and its monadic version proposed by Friedman and Sabry, but it defines a different semantics and does not rely on assignments. When contrasted to the axiomatic approach proposed by Erkök and Launchbury, our semantics for the continuation monad invalidates one of the axioms, adding to the evidence that this axiom is problematic in the presence of continuations. 1
Staged Notational Definitions
 GENERATIVE PROGRAMMING AND COMPONENT ENGINEERING (GPCE), LECTURE NOTES IN COMPUTER SCIENCE
, 2003
"... Recent work proposed defining typesafe macros via interpretation into a multistage language. The utility of this approach was illustrated with a language called MacroML, in which all type checking is carried out before macro expansion. Building on this work, the goal of this paper is to develo ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
Recent work proposed defining typesafe macros via interpretation into a multistage language. The utility of this approach was illustrated with a language called MacroML, in which all type checking is carried out before macro expansion. Building on this work, the goal of this paper is to develop a macro language that makes it easy for programmers to reason about terms locally. We show that defining the semantics of macros in this manner helps in developing and verifying not only type systems for macro languages but also equational reasoning principles. Because the MacroML calculus is sensetive to renaming of (what appear locally to be) bound variables, we present a calculus of staged notational definitions (SND) that eliminates the renaming problem but retains MacroML's phase distinction. Additionally, SND incorporates the generality of Griffin's account of notational definitions. We exhibit a formal equational theory for SND and prove its soundness.
A Fresh Calculus for Name Management
 In Karsai and Visser [KV04
"... We define a basic calculus for name management, which is obtained by an appropriate combination of three ingredients: extensible records (in a simplified form), names (as in FreshML), computational types (to allow computational e#ects, including generation of fresh names). The calculus supports the ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
We define a basic calculus for name management, which is obtained by an appropriate combination of three ingredients: extensible records (in a simplified form), names (as in FreshML), computational types (to allow computational e#ects, including generation of fresh names). The calculus supports the use of symbolic names for programming inthelarge, e.g. it subsumes Ancona and Zucca's calculus for module systems, and for metaprogramming (but not the intensional analysis of object level terms supported by FreshML), e.g. it subsumes (and improves) Nanevski and Pfenning's calculus for metaprogramming with names and necessity. Moreover, it models some aspects of Java's class loaders. 1
A Monadic Approach for Avoiding Code Duplication when Staging Memoized Functions
, 2006
"... Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions are staged. Without addressing this problem, it would be impossible to effectively stage dynamic programming algorithms. Intuitively, direct staging undoes the effect of memoization. To solve this problem once and for all, and for any function that uses memoization, we propose a staged monadic combinator library. Experimental results confirm that the library works as expected. Preliminary results also indicate that the library is useful even when memoization is not used.
A Calculus for Symbolic Names Management
, 2003
"... We define a basic calculus ML for manipulating symbolic names inspired by # calculi with extensible records. The resulting calculus supports the use of symbolic names for metaprogramming and programming inthelarge, it subsumes Ancona and Zucca's CMS, and partly Nanevski and Pfenning's # , ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We define a basic calculus ML for manipulating symbolic names inspired by # calculi with extensible records. The resulting calculus supports the use of symbolic names for metaprogramming and programming inthelarge, it subsumes Ancona and Zucca's CMS, and partly Nanevski and Pfenning's # , and seems able to model some aspects of the mechanism of Java class loaders. We present two di#erent extensions of the basic calculus, the first consider the interaction with computational e#ects (in the form of imperative computations), the second shows how CMS can be naturally encoded into ML . 1
A Cumulative Monadic Metalanguage
, 2004
"... We introduce a monadic metalanguage which combines two previously proposed monadic metalanguages: one for staging and the other for value recursion. The metalanguage includes also extensible records as a basic name management facility. 1 ..."
Abstract
 Add to MetaCart
We introduce a monadic metalanguage which combines two previously proposed monadic metalanguages: one for staging and the other for value recursion. The metalanguage includes also extensible records as a basic name management facility. 1
www.elsevier.com/locate/entcs Structuring Operational Semantics: Simplification and Computation
"... The paper describes a language consisting of two layers, terms and computation rules, whose operational semantics is given in terms of two relations: simplification and computation. Simplification is induced by confluent rewriting on terms. Computation is induced by chemical reactions, like those in ..."
Abstract
 Add to MetaCart
The paper describes a language consisting of two layers, terms and computation rules, whose operational semantics is given in terms of two relations: simplification and computation. Simplification is induced by confluent rewriting on terms. Computation is induced by chemical reactions, like those in the Joincalculus. The language can serve as metalanguage for defining the operational semantics of other languages. This is demonstrated by defining encodings of several calculi (representing idealized programming languages). Keywords: Operational Semantics, Confluent Rewriting, Multiset Rewriting.
Languages]: D.3.3 Language Constructs and Features
"... Staging is a powerful language construct that allows a program at one stage to manipulate and specialize a program at the next. We propose 〈ML 〉 as a new staged calculus designed with novel features for staged programming in modern computing platforms such as embedded systems. A distinguishing featu ..."
Abstract
 Add to MetaCart
Staging is a powerful language construct that allows a program at one stage to manipulate and specialize a program at the next. We propose 〈ML 〉 as a new staged calculus designed with novel features for staged programming in modern computing platforms such as embedded systems. A distinguishing feature of 〈ML 〉 is a model of process separation, whereby different stages of computation are executed in different process spaces. Our language also supports dynamic type specialization via type abstraction, dynamic type construction, and a limited form of type dependence. 〈ML 〉 is endowed with a largely standard metatheory, including type preservation and type safety results. We discuss the utility of our language via code examples from the domain of wireless sensor network programming.
Mixin Modules and Computational Effects
"... Abstract. 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 eva ..."
Abstract
 Add to MetaCart
Abstract. 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 can contain mutually recursive computational components which are explicitly computed by means of a new mixin operator whose semantics is defined in terms of a Haskelllike recursive monadic binding. Since we mainly focus on the operational aspects, we adopt a simple type system like that for Haskell, that does not detect dynamic errors related to bad recursive declarations involving effects. The calculus serves as a formal basis for defining the semantics of imperative programming languages supporting first class mixins while preserving the CMS equational reasoning. 1