Results 1 
5 of
5
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 82 (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.
Polytypic Functional Programming and Data Abstraction
, 2006
"... Structural polymorphism is a generic programming technique known within the functional programming community under the names of polytypic or datatypegeneric programming. In this thesis we show that such a technique conflicts with the principle of data abstraction and propose a solution for reconcil ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Structural polymorphism is a generic programming technique known within the functional programming community under the names of polytypic or datatypegeneric programming. In this thesis we show that such a technique conflicts with the principle of data abstraction and propose a solution for reconciliation. More concretely, we show that popular polytypic extensions of the functional programming language Haskell, namely, Generic Haskell and Scrap your Boilerplate have their genericity limited by data abstraction. We propose an extension to the Generic Haskell language where the `structure' in `structural polymorphism' is defined around the concept of interface and not the representation of a type.
Strong Categorical Datatypes I
, 1991
"... An endofunctor of a cartesian closed category is often called strong if it is enriched over the exponential. Equivalently this strength can be provided as a natural transformation ` A;X : F (A) \Theta X \Gamma! F (A \Theta X) satisfying some elementary coherence conditions. This latter formulation ..."
Abstract
 Add to MetaCart
(Show Context)
An endofunctor of a cartesian closed category is often called strong if it is enriched over the exponential. Equivalently this strength can be provided as a natural transformation ` A;X : F (A) \Theta X \Gamma! F (A \Theta X) satisfying some elementary coherence conditions. This latter formulation does not require exponentials, relies only on the presence of an Xaction over an Xstrong category, and thereby provides a firstorder viewpoint of strength. The 2category of Xstrong categories is not finitely complete. It particularly lacks many standard constructions including the EilenbergMoore construction. Thankfully, the suggestion  attributed to Plotkin by Moggi  that strength can also be equivalently framed in terms of fibrations using projections to Xobjects as display maps can be fully realized. The equivalence can be portrayed as an embedding of Xstrong categories into the 2category of Xindexed categories or split fibrations over X. This embedding can be u...