## Subtyping and Inheritance for Inductive Types (1997)

Venue: | In Informal proceedings of the 1994 TYPES Workshop |

Citations: | 5 - 2 self |

### BibTeX

@INPROCEEDINGS{Poll97subtypingand,

author = {Erik Poll},

title = {Subtyping and Inheritance for Inductive Types},

booktitle = {In Informal proceedings of the 1994 TYPES Workshop},

year = {1997}

}

### OpenURL

### Abstract

Inheritance and subtyping are key features of object-oriented languages. We show that there are corresponding -- or, more precisely, dual -- notions for inductive types (or algebraic datatypes): there is a natural notion of subtyping for these types and an associated form of code reuse (inheritance) for programs on these types. Inheritance and subtyping for inductive types not only suggest possible extensions of functional programming languages, but also provide a new perspective on inheritance as we know it from object-oriented languages, which may help to get a better understanding of this notion. 1 Introduction Functional programming languages such as ML [MTH90] provide algebraic datatypes -- e.g. lists, trees -- , and type theories such as Coq [Cor95] or Alf [AGNvS94] provide a more general notion of inductive type. Algebras are a well-known way of modelling these types: algebraic datatypes and inductive types can be understood as term algebras (or initial algebras). It has been o...

### Citations

1619 | The De of Standard ML
- Milner, Tofte, et al.
- 1990
(Show Context)
Citation Context ... a new perspective on inheritance as we know it from object-oriented languages, which may help to get a better understanding of this notion. 1 Introduction Functional programming languages such as ML =-=[MTH90]-=- provide algebraic datatypes -- e.g. lists, trees -- , and type theories such as Coq [Cor95] or Alf [AGNvS94] provide a more general notion of inductive type. Algebras are a well-known way of modellin... |

242 | A tutorial on (co)algebras and (co)induction
- Jacobs, Rutten
- 1997
(Show Context)
Citation Context ... not as well-known as algebras, but the importance of co-algebras has been recognised as a way of modelling not only objects, but also infinite data structures, coinductive types, and processes. (See =-=[JR97]-=- for a gentle introduction to co-algebras.) We don't have to know anything about co-algebras here, except that they are duals of algebras in some sense. If algebraic datatypes can be modelled as algeb... |

129 | Type classes in Haskell
- Hall, Hammond, et al.
- 1996
(Show Context)
Citation Context ...xtensions of functional programming languages aimed at supporting code reuse or limited forms of object orientation? There are several of these extensions, for instance the class mechanism in Haskell =-=[HHJW96]-=- -- which also allows some form of overloading --, the combination of this class mechanism with existential types [Lau96], and the experimental Haskell dialect called Mondrian [MC97]. The notion of co... |

96 |
An approach to object semantics based on terminal co-algebras
- Reichel
- 1995
(Show Context)
Citation Context ...n way of modelling these types: algebraic datatypes and inductive types can be understood as term algebras (or initial algebras). It has been observed that object types can be modelled as co-algebras =-=[Rei95]-=-. Co-algebras are not as well-known as algebras, but the importance of co-algebras has been recognised as a way of modelling not only objects, but also infinite data structures, coinductive types, and... |

36 | A user's guide to ALF
- Altenkirch, Gaspes, et al.
- 1994
(Show Context)
Citation Context ...ter understanding of this notion. 1 Introduction Functional programming languages such as ML [MTH90] provide algebraic datatypes -- e.g. lists, trees -- , and type theories such as Coq [Cor95] or Alf =-=[AGNvS94]-=- provide a more general notion of inductive type. Algebras are a well-known way of modelling these types: algebraic datatypes and inductive types can be understood as term algebras (or initial algebra... |

29 | Type classes with existential types
- Läufer
- 1996
(Show Context)
Citation Context ... are several of these extensions, for instance the class mechanism in Haskell [HHJW96] -- which also allows some form of overloading --, the combination of this class mechanism with existential types =-=[Lau96]-=-, and the experimental Haskell dialect called Mondrian [MC97]. The notion of co-inheritance for inductive types introduced here provides a different perspective on inheritance as we know it from objec... |

19 | The design and implementation of Mondrian
- Meijer, Claessen
- 1997
(Show Context)
Citation Context ...nism in Haskell [HHJW96] -- which also allows some form of overloading --, the combination of this class mechanism with existential types [Lau96], and the experimental Haskell dialect called Mondrian =-=[MC97]-=-. The notion of co-inheritance for inductive types introduced here provides a different perspective on inheritance as we know it from object-oriented languages. This may help to get a better understan... |

9 |
et al. The Coq Proof Assistant Reference Manual, Version 5.10. Rapport technique RT-0177
- Cornes
- 1995
(Show Context)
Citation Context ...lp to get a better understanding of this notion. 1 Introduction Functional programming languages such as ML [MTH90] provide algebraic datatypes -- e.g. lists, trees -- , and type theories such as Coq =-=[Cor95]-=- or Alf [AGNvS94] provide a more general notion of inductive type. Algebras are a well-known way of modelling these types: algebraic datatypes and inductive types can be understood as term algebras (o... |