Structural polymorphism is a generic programming technique known within the functional programming community under the names of polytypic or datatype-generic 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
Software development often consists of designing datatypes around which functionality is added. Som...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
Many functions have to be written over and over again for different datatypes, either because dataty...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Functional generic programming extends functional programming with the ability to parameterize funct...
Many functions have to be written over and over again for different datatypes, either because dataty...
A generic function is defined by induction on the structure of types. The structure of a data type ...
Abstract. A generic function is defined by induction on the structure of types. The structure of a d...
Abstract Functional generic programming extends functional programming with the ability to parameter...
This thesis is an exploration -- an exploration of a language extension of the functional programmi...
This thesis aims at making Datatype Generic Programming more useful in practice. We extend the fixed...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic progr...
Software development often consists of designing datatypes around which functionality is added. Som...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
Many functions have to be written over and over again for different datatypes, either because dataty...
Many algorithms have to be implemented over and over again for different datatypes, either because d...
Functional generic programming extends functional programming with the ability to parameterize funct...
Many functions have to be written over and over again for different datatypes, either because dataty...
A generic function is defined by induction on the structure of types. The structure of a data type ...
Abstract. A generic function is defined by induction on the structure of types. The structure of a d...
Abstract Functional generic programming extends functional programming with the ability to parameter...
This thesis is an exploration -- an exploration of a language extension of the functional programmi...
This thesis aims at making Datatype Generic Programming more useful in practice. We extend the fixed...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Abstract. Generic Haskell is an extension of Haskell that supports the construction of generic progr...
Software development often consists of designing datatypes around which functionality is added. Som...
Datatype-generic programming involves parametrization by the shape of data, in the form of type cons...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...