Results 1 
5 of
5
Bananas in Space: Extending Fold and Unfold to Exponential Types
, 1995
"... Fold and unfold are general purpose functionals for processing and constructing lists. By using the categorical approach of modelling recursive datatypes as fixed points of functors, these functionals and their algebraic properties were generalised from lists to polynomial (sumofproduct) datatypes ..."
Abstract

Cited by 96 (6 self)
 Add to MetaCart
(Show Context)
Fold and unfold are general purpose functionals for processing and constructing lists. By using the categorical approach of modelling recursive datatypes as fixed points of functors, these functionals and their algebraic properties were generalised from lists to polynomial (sumofproduct) datatypes. However, the restriction to polynomial datatypes is a serious limitation: it precludes the use of exponentials (functionspaces) , whereas it is central to functional programming that functions are firstclass values, and so exponentials should be able to be used freely in datatype definitions. In this paper we explain how Freyd's work on modelling recursive datatypes as fixed points of difunctors shows how to generalise fold and unfold from polynomial datatypes to those involving exponentials. Knowledge of category theory is not required; we use Gofer throughout as our metalanguage, making extensive use of constructor classes. 1 Introduction During the 1980s, Bird and Meertens [6, 22] d...
Functional Programming with Overloading and HigherOrder Polymorphism
, 1995
"... The Hindley/Milner type system has been widely adopted as a basis for statically typed functional languages. One of the main reasons for this is that it provides an elegant compromise between flexibility, allowing a single value to be used in different ways, and practicality, freeing the progr ..."
Abstract

Cited by 74 (4 self)
 Add to MetaCart
The Hindley/Milner type system has been widely adopted as a basis for statically typed functional languages. One of the main reasons for this is that it provides an elegant compromise between flexibility, allowing a single value to be used in different ways, and practicality, freeing the programmer from the need to supply explicit type information. Focusing on practical applications rather than implementation or theoretical details, these notes examine a range of extensions that provide more flexible type systems while retaining many of the properties that have made the original Hindley/Milner system so popular. The topics discussed, some old, but most quite recent, include higherorder polymorphism and type and constructor class overloading. Particular emphasis is placed on the use of these features to promote modularity and reusability.
From HindleyMilner types to firstclass structures
 In Proceedings of the Haskell Workshop
, 1995
"... We describe extensions of the HindleyMilner type system to support higherorder polymorphism and firstclass structures with polymorphic components. The combination of these features results in a ‘core language ’ that rivals the expressiveness of the Standard ML module system in some respects and e ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
(Show Context)
We describe extensions of the HindleyMilner type system to support higherorder polymorphism and firstclass structures with polymorphic components. The combination of these features results in a ‘core language ’ that rivals the expressiveness of the Standard ML module system in some respects and exceeds it in others. 1
Abstract Bananas in Space: Extending Fold and Unfold to Exponential Types
"... Fold and unfold are general purpose functionals for processing and constructing lists. By using the categorical approach of modelling recursive datatypes as fixed points of functors, these functionals and their algebraic properties were generalised from lists to polynomial (sumofproduct) datatypes ..."
Abstract
 Add to MetaCart
(Show Context)
Fold and unfold are general purpose functionals for processing and constructing lists. By using the categorical approach of modelling recursive datatypes as fixed points of functors, these functionals and their algebraic properties were generalised from lists to polynomial (sumofproduct) datatypes. However, the restriction to polynomial datatypes is a serious limitation: it precludes the use of exponentials (functionspaces), whereas it is central to functional programming that functions are firstclass values, and so exponentials should be able to be used freely in datatype definitions. In this paper we explain how Freyd’s work on modelling recursive datatypes as fixed points of difunctors shows how to generalise fold and unfold from polynomial datatypes to those involving exponentials. Knowledge of category theory is not required; we use Gofer throughout as our metalanguage, making extensive use of constructor classes. 1
From HindleyMilner Types to FirstClass Structures
"... Abstract We describe extensions of the HindleyMilner type system to support higherorder polymorphism and firstclass structures with polymorphic components. The combination of these features results in a `core language ' that rivals the expressiveness of the Standard ML module system in some ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract We describe extensions of the HindleyMilner type system to support higherorder polymorphism and firstclass structures with polymorphic components. The combination of these features results in a `core language ' that rivals the expressiveness of the Standard ML module system in some respects and exceeds it in others. 1 Introduction The HindleyMilner type system [13, 28, 8], hereafter referred to as HM, represents a significant and highly influential step in the design and development of programming language type systems. The main reason for this is that it combines the following features in a single framework: ffl Type security: soundness results guarantee that welltyped programs cannot `go wrong'. ffl Flexibility: polymorphism allows the use and definition of functions that behave uniformly