Results 1 
9 of
9
PolyP  a polytypic programming language extension
 POPL '97: The 24th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 1997
"... Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, debuggers, equality fu ..."
Abstract

Cited by 178 (28 self)
 Add to MetaCart
Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, debuggers, equality functions, unifiers, pattern matchers, rewriting functions, etc. Such functions are called polytypic functions. A polytypic function is a function that is defined by induction on the structure of userdefined datatypes. This paper extends a functional language (a subset of Haskell) with a construct for writing polytypic functions. The extended language type checks definitions of polytypic functions, and infers the types of all other expressions using an extension of Jones ' theories of qualified types and higherorder polymorphism. The semantics of the programs in the extended language is obtained by adding type arguments to functions in a dictionary passing style. Programs in the extended language are translated to Haskell. 1
Polytypic programming
, 2000
"... ... PolyP extends a functional language (a subset of Haskell) with a construct for defining polytypic functions by induction on the structure of userdefined datatypes. Programs in the extended language are translated to Haskell. PolyLib contains powerful structured recursion operators like catamorp ..."
Abstract

Cited by 93 (12 self)
 Add to MetaCart
... PolyP extends a functional language (a subset of Haskell) with a construct for defining polytypic functions by induction on the structure of userdefined datatypes. Programs in the extended language are translated to Haskell. PolyLib contains powerful structured recursion operators like catamorphisms, maps and traversals, as well as polytypic versions of a number of standard functions from functional programming: sum, length, zip, (==), (6), etc. Both the specification of the library and a PolyP implementation are presented.
A Semantics for Shape
 Science of Computer Programming
, 1995
"... Shapely types separate data, represented by lists, from shape, or structure. This separation supports shape polymorphism, where operations are defined for arbitrary shapes, and shapely operations, for which the shape of the result is determined by that of the input, permitting static shape checking. ..."
Abstract

Cited by 60 (18 self)
 Add to MetaCart
Shapely types separate data, represented by lists, from shape, or structure. This separation supports shape polymorphism, where operations are defined for arbitrary shapes, and shapely operations, for which the shape of the result is determined by that of the input, permitting static shape checking. The shapely types are closed under the formation of fixpoints, and hence include the usual algebraic types of lists, trees, etc. They also include other standard data structures such as arrays, graphs and records. 1 Introduction The values of a shapely type are uniquely determined by their shape and their data. The shape can be thought of as a structure with holes or positions, into which data elements (stored in a list) can be inserted. The use of shape in computing is widespread, but till now it has not, apparently, been the subject of independent study. The body of the paper presents a semantics for shape, based on elementary ideas from category theory. First, let us consider some examp...
Algorithms and Orders for Finding Noncommutative Gröbner Bases
, 1997
"... The problem of choosing efficient algorithms and good admissible orders for computing Gröbner bases in noncommutative algebras is considered. Gröbner bases are an important tool that make many problems in polynomial algebra computationally tractable. However, the computation of Grobner bases is expe ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
The problem of choosing efficient algorithms and good admissible orders for computing Gröbner bases in noncommutative algebras is considered. Gröbner bases are an important tool that make many problems in polynomial algebra computationally tractable. However, the computation of Grobner bases is expensive, and in noncommutative algebras is not guaranteed to terminate. The algorithm, together with the order used to determine the leading term of each polynomial, are known to affect the cost of the computation, and are the focus of this thesis. A Gröbner basis is a set of polynomials computed, using Buchberger's algorithm, from another set of polynomials. The noncommutative form of Buchberger's algorithm repeatedly constructs a new polynomial from a triple, which is a pair of polynomials whose leading terms overlap and form a nontrivial common multiple. The algorithm leaves a number of details underspecified, and can be altered to improve its behavior. A significant improvement is the devel...
Distinguishing Data Structures and Functions: the Constructor Calculus and Functorial Types
 Typed Lambda Calculi and Applications: 5th International Conference TLCA 2001
, 2001
"... The expressive power of functional programming can be improved by identifying and exploiting the characteristics that distinguish data types from function types. Data types support generic functions for equality, mapping, folding, etc. that do not apply to functions. Such generic functions requi ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
The expressive power of functional programming can be improved by identifying and exploiting the characteristics that distinguish data types from function types. Data types support generic functions for equality, mapping, folding, etc. that do not apply to functions. Such generic functions require case analysis, or patternmatching, where the branches may have incompatible types, e.g. products or sums. This is handled in the constructor calculus where specialisation of program extensions is governed by constructors for data types. Typing of generic functions employs polymorphism over functors in a functorial type system. The expressive power is greatly increased by allowing the functors to be polymorphic in the number of arguments they take, i.e. in their arities. The resulting system can define and type the fundamental examples above. Some basic properties are established, namely subject reduction, the ChurchRosser property, and the existence of a practical type inference algorithm.
Functional polytypic programming  use and implementation
, 1997
"... Abstract Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, pattern match ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Abstract Many functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, pattern matchers, equality functions, unifiers, rewriting functions, etc. Such functions are called polytypic functions. A polytypic function is a function that is defined by induction on the structure of userdefined datatypes. This thesis introduces polytypic functions, shows how to construct and reason about polytypic functions and describes the implementation of the polytypic programming system PolyP. PolyP extends a functional language (a subset of Haskell) with a construct for writing polytypic functions. The extended language type checks definitions of polytypic functions, and infers the types of all other expressions. Programs in the extended language are translated to Haskell.
Covariant Types
 Theoretical Computer Science
, 1997
"... The covariant type system is an impredicative system that is rich enough to represent some polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parame ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
The covariant type system is an impredicative system that is rich enough to represent some polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parametric functions. Their free type variables are all in positive positions, and so can be modelled by covariant functors. Similarly, terms denote natural transformations. There is a translation from the covariant type system to system F which preserves nontrivial reductions. It follows that covariant reduction is strongly normalising and confluent. This work suggests a new approach to the semantics of system F, and new ways of basing type systems on the categorical notions of functor and natural transformation. Keywords covariant types, polymorphism, parametricity, transformation types. 1 Introduction The pros and cons of typing programs are already well known. In brief, static typecheckin...
A Fresh Look at Parametric Polymorphism: Covariant Types
 Nineteenth Australasian Computer Science Conference Proceedings
, 1996
"... The covariant type system is rich enough to represent polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parametric functions. Their free type variab ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The covariant type system is rich enough to represent polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parametric functions. Their free type variables are all in positive positions, and so can be modelled by covariant functors. Similarly, terms denote natural transformations. There is a translation from the covariant type system to system F which preserves nontrivial reductions. Consequently, covariant reduction is strongly normalising and confluent. Keywords types polymorphism parametric covariance transformations. 1 Introduction The pros and cons of typing programs are too well known to require detailed elaboration here. In brief, static typechecking by the compiler catches many programmer errors, and reduces, or eliminates (if the type system is strong) runtime type errors, which are expensive to handle. Also, typing supports a...
Functors, Types and Shapes
 Chalmers University of Technology
, 1998
"... r goals of generic programming. However, in pointing out minor differences, let us not forget the overwhelming unity of purpose that brings us together. FML supports a kind of functors F; G, as well as of types ø and type schema oe. The full type system is given by F; G ::= U j C j \Pi m i j F hG ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
r goals of generic programming. However, in pointing out minor differences, let us not forget the overwhelming unity of purpose that brings us together. FML supports a kind of functors F; G, as well as of types ø and type schema oe. The full type system is given by F; G ::= U j C j \Pi m i j F hGi n j ¯ m F ø ::= X j F (ø) j ø 1 ! ø 2 oe ::= ø j 8U : m:oe j 8X : T:oe : Each functor F has an arity m (written F : m), which indicates the number of type arguments it takes. The functors include variables U and constants<F29.8