Results 1 
8 of
8
Formally optimal boxing
 In POPL '94 [37
"... An important implementation decision in polymorphically typed functional programming languages is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing operations w ..."
Abstract

Cited by 39 (0 self)
 Add to MetaCart
An important implementation decision in polymorphically typed functional programming languages is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing operations we axiomatize equationally the set of all explicitly boxed versions, called completions, of a given source program. In a twostage process we give some of the equations a rewriting interpretation that captures eliminating boxing/unboxing operations without relying on a specific implementation or even semantics of the underlying language. The resulting reduction systems operate on congruence classes of completions defined by the remaining equations E, which can be understood as moving boxing/unboxing operations along data flow paths in the source program. We call a completion eopt formally optimal if every other completion for the same program (and at the same representation type) reduces to eopt under this twostage reduction. We show that every source program has formally optimal completions, which are unique modulo E. This is accomplished by first “polarizing ” the equations in E and orienting them to obtain two canonical (confluent and strongly normalizing) rewriting systems. The completions produced by Leroy’s and Poulsen’s algorithms are generally not formally optimal in our sense. The rewriting systems have been implemented and applied to some simple Standard ML programs. Our results show that the amount of boxing and unboxing operations is also in practice substantially reduced in comparison to Leroy’s completions. This analysis is intended to be integrated into Tofte’s regionbased implementation of Standard ML currently underway at DIKU.
Equal Rights for Functional Objects or, The More Things Change, The More They Are the Same
, 1993
"... DATA TYPES A. Comparing Type Objects There has been as much confusion over type identity as there has been over object identity, although the type identity problem is usually referred to as the type equivalence problem [Aho86,s.6.3] [Wegbreit74] [Welsh77]. The type identity problem is to determine ..."
Abstract

Cited by 24 (7 self)
 Add to MetaCart
DATA TYPES A. Comparing Type Objects There has been as much confusion over type identity as there has been over object identity, although the type identity problem is usually referred to as the type equivalence problem [Aho86,s.6.3] [Wegbreit74] [Welsh77]. The type identity problem is to determine when two types are equal, so that type checking can be done in a programming language. 22 Algol68 takes the point of view of "structural" equivalence, in which nonrecursive types that are built up from primitive types using the same type constructors in the same order should compare equal, while Ada takes the point of view of "name" equivalence, in which types are equivalent if and only if they have the same name. We will ignore the software engineering issues of which kind of type equivalence makes for betterengineered programs, and focus on the basic issue of type equivalence itself. We note that if a type system offers the type TYPEi.e., it offers firstclass representations of typ...
Minimizing Reference Count Updating with Deferred and Anchored Pointers for Functional Data Structures
 ACM SIGPLAN Notices
, 1994
"... this paper. ..."
An Optimizing Compiler for Lexically Scoped Lisp
 In Proceedings of the SIGPLAN '82 Symposium on Compiler Construction
, 1982
"... 1 ..."
(Show Context)
A Calculus for Boxing Analysis of Polymorphically Typed Languages
, 1996
"... An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing ope ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing operations we axiomatize equationally the set of all explicitly boxed versions, called completions , of a given source program. In a twostage process we give some of the equations a rewriting interpretation that captures eliminating boxing/unboxing operations without relying on a specific implementation or even the semantics of the underlying language. The resulting reduction systems operate on equivalence classes of completions defined by the remaining equations E, which can be understood as moving boxing/unboxing operations along data flow paths in the source program. We call a completion e opt formally optimal if every other completion for the same program (and at the same representation ty...
L1 [Spä76, Abd80, RR73b]. ≤ 80 [CM66].
, 2013
"... Version 2.42 Title word crossreference (a, a ′ ) [SR73, SR73]. (a, b) [SMD71, SR73]. (a, bγ) [SR73]. (a, bγ − γ) [SR73]. (a, bσ) [SMD71]. (a, bσ − σ) [SMD71]. (a, γ) [SR73]. (a, γ − γ) [SR73]. + [AI79]. 0 [Fia73, MT78]. 1 [Fia73, MT78, RCL75]. ..."
Abstract
 Add to MetaCart
Version 2.42 Title word crossreference (a, a ′ ) [SR73, SR73]. (a, b) [SMD71, SR73]. (a, bγ) [SR73]. (a, bγ − γ) [SR73]. (a, bσ) [SMD71]. (a, bσ − σ) [SMD71]. (a, γ) [SR73]. (a, γ − γ) [SR73]. + [AI79]. 0 [Fia73, MT78]. 1 [Fia73, MT78, RCL75].
LISP: PROGRAM IS DATA A HISTORICAL PERSPECTIVE ON MACLISP
"... For over 10 years, MACLISP has supported a variety of projects at M.I.T.'s Artificial Intelligence ..."
Abstract
 Add to MetaCart
For over 10 years, MACLISP has supported a variety of projects at M.I.T.'s Artificial Intelligence
Jn(x) [Col80a]. Jn(x + jy) [Sca71].
, 2012
"... Version 2.40 Title word crossreference (a, a ′ ) [SR73, SR73]. (a, b) [SMD71, SR73]. (a, bγ) [SR73]. (a, bγ − γ) [SR73]. (a, bσ) [SMD71]. (a, bσ − σ) [SMD71]. (a, γ) [SR73]. (a, γ − γ) [SR73]. + [AI79]. 0 [Fia73, MT78]. 1 [Fia73, MT78, RCL75]. ..."
Abstract
 Add to MetaCart
Version 2.40 Title word crossreference (a, a ′ ) [SR73, SR73]. (a, b) [SMD71, SR73]. (a, bγ) [SR73]. (a, bγ − γ) [SR73]. (a, bσ) [SMD71]. (a, bσ − σ) [SMD71]. (a, γ) [SR73]. (a, γ − γ) [SR73]. + [AI79]. 0 [Fia73, MT78]. 1 [Fia73, MT78, RCL75].