Results 1  10
of
112
How to make adhoc polymorphism less adhoc
 In Proc. 16th ACM Symposium on Principles of Programming Languages
, 1989
"... ..."
(Show Context)
Views: A way for pattern matching to cohabit with data abstraction
, 1986
"... Pattern matching and dta abstraction are important concepts in designing programs, but they do not it well together. Pattern matching depend on making public a free data type mpresentaiion, while data abstraction depends on hiding the repreentaiion. This paper proposes the vdws mechanism at a means ..."
Abstract

Cited by 173 (0 self)
 Add to MetaCart
Pattern matching and dta abstraction are important concepts in designing programs, but they do not it well together. Pattern matching depend on making public a free data type mpresentaiion, while data abstraction depends on hiding the repreentaiion. This paper proposes the vdws mechanism at a means of reconc'dlng this conflict. A view allows any type to be viewed at a free data type, thus combining the clarity of pattern matching with the eiclency of data abstraction.
The Syntax Definition Formalism SDF  Reference Manual
, 2001
"... SDF is a formalism for the definition of syntax which is comparable to BNF in some respect, but has a wider scope in that it also covers the definition... ..."
Abstract

Cited by 164 (27 self)
 Add to MetaCart
SDF is a formalism for the definition of syntax which is comparable to BNF in some respect, but has a wider scope in that it also covers the definition...
A Foundation for Higherorder Concurrent Constraint Programming
, 1994
"... We present the flcalculus, a computational calculus for higherorder concurrent programming. The calculus can elegantly express higherorder functions (both eager and lazy) and concurrent objects with encapsulated state and multiple inheritance. The primitives of the flcalculus are logic variables ..."
Abstract

Cited by 66 (13 self)
 Add to MetaCart
We present the flcalculus, a computational calculus for higherorder concurrent programming. The calculus can elegantly express higherorder functions (both eager and lazy) and concurrent objects with encapsulated state and multiple inheritance. The primitives of the flcalculus are logic variables, names, procedural abstraction, and cells. Cells provide a notion of state that is fully compatible with concurrency and constraints. Although it does not have a dedicated communication primitive, the flcalculus can elegantly express onetomany and manytoone communication. There is an interesting relationship between the flcalculus and the ßcalculus: The flcalculus is subsumed by a calculus obtained by extending the asynchronous and polyadic ßcalculus with logic variables. The flcalculus can be extended with primitives providing for constraintbased problem solving in the style of logic programming. A such extended flcalculus has the remarkable property that it combines firstor...
Genericity versus inheritance
 in Proceedings of ACM Conference on ObjectOriented Programming Systems, Languages and Applications
"... Genericity, as in Ada or ML, and inheritance, as in objectoriented languages, are two alternative techniques for ensuring better extendibility, reusability, and compatibility of software components. This article is a comparative analysis of these two methods. It studies their similarities and diffe ..."
Abstract

Cited by 66 (1 self)
 Add to MetaCart
(Show Context)
Genericity, as in Ada or ML, and inheritance, as in objectoriented languages, are two alternative techniques for ensuring better extendibility, reusability, and compatibility of software components. This article is a comparative analysis of these two methods. It studies their similarities and differences and assesses to what extent each may be simulated in a language offering only the other. It shows what features are needed to successfully combine the two approaches in an objectoriented language that also features strong type checking. The discussion introduces the principal aspects of the language EiffePM whose design, resulting in part from this study, includes multiple inheritance and a limited form of genericity under full static typing. OVERVIEW Despite its name, today's software is usually not soft enough: adapting it to new uses turns out in most cases to be a harder endeavor than should be. It is thus essential to find ways of enhancing such software quality factors as extendibility (the ease
ContextSensitive Rewriting Strategies
, 1997
"... Contextsensitive rewriting is a simple restriction of rewriting which is formalized by imposing fixed restrictions on replacements. Such a restriction is given on a purely syntactic basis: it is (explicitly or automatically) specified on the arguments of symbols of the signature and inductively ..."
Abstract

Cited by 46 (32 self)
 Add to MetaCart
(Show Context)
Contextsensitive rewriting is a simple restriction of rewriting which is formalized by imposing fixed restrictions on replacements. Such a restriction is given on a purely syntactic basis: it is (explicitly or automatically) specified on the arguments of symbols of the signature and inductively extended to arbitrary positions of terms built from those symbols. Termination is not only preserved but usually improved and several methods have been developed to formally prove it. In this paper, we investigate the definition, properties, and use of contextsensitive rewriting strategies, i.e., particular, fixed sequences of contextsensitive rewriting steps. We study how to define them in order to obtain efficient computations and to ensure that contextsensitive computations terminate whenever possible. We give conditions enabling the use of these strategies for rootnormalization, normalization, and infinitary normalization. We show that this theory is suitable for formalizing ...
Ordersorted polymorphism in isabelle
 Logical Environments
, 1993
"... MLstyle polymorphism can be generalized from a singlesorted algebra of types to an ordersorted one by adding a partially ordered layer of “sorts ” on top of the types. Type inference proceeds as in the Hindley/Milner system, except that ordersorted unification of types is used. The resulting sys ..."
Abstract

Cited by 37 (2 self)
 Add to MetaCart
(Show Context)
MLstyle polymorphism can be generalized from a singlesorted algebra of types to an ordersorted one by adding a partially ordered layer of “sorts ” on top of the types. Type inference proceeds as in the Hindley/Milner system, except that ordersorted unification of types is used. The resulting system has been implemented in Isabelle to permit type variables to range over userdefinable subsets of all types. Ordersorted polymorphism allows a simple specification of type restrictions in many logical systems. It accommodates userdefined parametric overloading and allows for a limited form of abstract axiomatic reasoning. It can also explain type inference with Standard ML’s equality types and Haskell’s type classes. 1
Termination of ondemand rewriting and termination of OBJ programs
 In Proc. of 3rd International Conference on Principles and Practice of Declarative Programming, PPDP'01
, 2001
"... Declarative languages such as OBJ*, CafeOBJ, and Maude use syntactic annotations to introduce replacement restrictions aimed at improving termination or efficiency of computations. Unfortunately, there is a lack of formal techniques for proving such benefits. We show that contextsensitive rewriting ..."
Abstract

Cited by 33 (21 self)
 Add to MetaCart
(Show Context)
Declarative languages such as OBJ*, CafeOBJ, and Maude use syntactic annotations to introduce replacement restrictions aimed at improving termination or efficiency of computations. Unfortunately, there is a lack of formal techniques for proving such benefits. We show that contextsensitive rewriting and ondemand rewriting provide a suitable framework to address this problem. We provide methods to analyze termination of ondemand rewriting and apply them to analyze termination of OBJ*, CafeOBJ, and Maude programs. Keywords Program analysis, replacement restrictions, term rewriting, termination 1.
Normalization Results for Typeable Rewrite Systems
, 1997
"... In this paper we introduce Curryfied Term Rewriting Systems, and a notion of partial type assignment on terms and rewrite rules that uses intersection types with sorts and !. Three operations on types  substitution, expansion, and lifting  are used to define type assignment, and are proved to be ..."
Abstract

Cited by 30 (26 self)
 Add to MetaCart
In this paper we introduce Curryfied Term Rewriting Systems, and a notion of partial type assignment on terms and rewrite rules that uses intersection types with sorts and !. Three operations on types  substitution, expansion, and lifting  are used to define type assignment, and are proved to be sound. With this result the system is proved closed for reduction. Using a more liberal approach to recursion, we define a general scheme for recursive definitions and prove that, for all systems that satisfy this scheme, every term typeable without using the typeconstant ! is strongly normalizable. We also show that, under certain restrictions, all typeable terms have a (weak) headnormal form, and that terms whose type does not contain ! are normalizable.