Results 1  10
of
29
Mixin modules in a callbyvalue 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 70 (9 self)
 Add to MetaCart
(Show Context)
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 nonstandard let rec construct. 1
August) Compilation of extended recursion in callbyvalue functional languages
 In Proceedings of PPDP: the 5th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming
, 2003
"... Abstract. This paper formalizes and proves correct a compilation scheme for mutuallyrecursive definitions in callbyvalue functional languages. This scheme supports a wider range of recursive definitions than standard callbyvalue recursive definitions. We formalize our technique as a translation ..."
Abstract

Cited by 26 (7 self)
 Add to MetaCart
Abstract. This paper formalizes and proves correct a compilation scheme for mutuallyrecursive definitions in callbyvalue functional languages. This scheme supports a wider range of recursive definitions than standard callbyvalue recursive definitions. We formalize our technique as a translation scheme to a lambdacalculus featuring inplace update of memory blocks, and prove the translation to be faithful.
On the Safety of Nöcker’s Strictness Analysis
 FRANKFURT AM MAIN, GERMANY
"... This paper proves correctness of Nöcker’s method of strictness analysis, implemented for Clean, which is an effective way for strictness analysis in lazy functional languages based on their operational semantics. We improve upon the work of Clark, Hankin and Hunt, which addresses correctness of the ..."
Abstract

Cited by 8 (7 self)
 Add to MetaCart
This paper proves correctness of Nöcker’s method of strictness analysis, implemented for Clean, which is an effective way for strictness analysis in lazy functional languages based on their operational semantics. We improve upon the work of Clark, Hankin and Hunt, which addresses correctness of the abstract reduction rules. Our method also addresses the cycle detection rules, which are the main strength of Nöcker’s strictness analysis. We reformulate Nöcker’s strictness analysis algorithm in a higherorder lambdacalculus with case, constructors, letrec, and a nondeterministic choice operator ⊕ used as a union operator. Furthermore, the calculus is expressive enough to represent abstract constants like Top or Inf. The operational semantics is a smallstep semantics and equality of expressions is defined by a contextual semantics that observes termination of expressions. The correctness of several reductions is proved using a context lemma and complete sets of forking and commuting diagrams. The
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 5 (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
Modes of Convergence for Term Graph Rewriting
"... Term graph rewriting provides a simple mechanism to finitely represent restricted forms of infinitary term rewriting. The correspondence between infinitary term rewriting and term graph rewriting has been studied to some extent. However, this endeavour is impaired by the lack of an appropriate count ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
(Show Context)
Term graph rewriting provides a simple mechanism to finitely represent restricted forms of infinitary term rewriting. The correspondence between infinitary term rewriting and term graph rewriting has been studied to some extent. However, this endeavour is impaired by the lack of an appropriate counterpart of infinitary rewriting on the side of term graphs. We aim to fill this gap by devising two modes of convergence based on a partial order resp. a metric on term graphs. The thus obtained structures generalise corresponding modes of convergence that are usually studied in infinitary term rewriting. We argue that this yields a common framework in which both term rewriting and term graph rewriting can be studied. In order to substantiate our claim, we compare convergence on term graphs and on terms. In particular, we show that the resulting infinitary calculi of term graph rewriting exhibit the same correspondence as we know it from term rewriting: Convergence via the partial order is a conservative extension of the metric convergence.
Dynamic rebinding for marshalling and update, via redextime and destructtime reduction
, 2008
"... ..."
Equivalence of callbyname and callbyneed for lambdacalculi with letrec
, 2007
"... We develop a proof method to show that in a (deterministic) lambda calculus with letrec and equipped with contextual equivalence the callbyname and the callbyneed evaluation are equivalent, and also that the unrestricted copyoperation is correct. Given a letbinding x = t, the copyoperation re ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
We develop a proof method to show that in a (deterministic) lambda calculus with letrec and equipped with contextual equivalence the callbyname and the callbyneed evaluation are equivalent, and also that the unrestricted copyoperation is correct. Given a letbinding x = t, the copyoperation replaces an occurrence of the variable x by the expression t, regardless of the form of t. This gives an answer to unresolved problems in several papers, it adds a strong method to the tool set for reasoning about contextual equivalence in higherorder calculi with letrec, and it enables a class of transformations that can be used as optimizations. The method can be used in different kind of lambda calculi with cyclic sharing. Probably it can also be used in nondeterministic lambda calculi if the variable x is “deterministic”, i.e., has no interference with nondeterministic executions. The main technical idea is to use a restricted variant of the infinitary lambdacalculus, whose objects are the expressions that are unrolled w.r.t. let, to define the infinite developments as a reduction calculus on the infinite trees and showing a standardization theorem.
Computational Soundness of a Call by Name Calculus of Recursivelyscoped Records
"... ..."
(Show Context)
A fresh calculus for name management
 In Proceedings of the International Conference on Generative Programming and Component Engineering
, 2004
"... Abstract. We define a basic calculus for name management, which combines three ingredients: extensible records (in a simplified form), names (as in FreshML), computational types (to allow computational effects, including generation of fresh names). The calculus supports the use of symbolic names fo ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
Abstract. We define a basic calculus for name management, which combines three ingredients: extensible records (in a simplified form), names (as in FreshML), computational types (to allow computational effects, 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
Mixin modules, modules and extended value binding in a callbyvalue setting
, 2003
"... Mixin modules, modules and extended value binding ..."