Towards a categorical foundation for generic programming

Generic Haskell is an extension of Haskell that supports datatype-generic programming. The central idea of Generic Haskell is to interpret a type by a function, the so-called instance of a generic function at that type. Since types in Haskell include parametric types such as `list of', Generic...

Full description

Bibliographic Details
Main Authors: Hinze, R, Wu, N
Format: Conference item
Published: ACM 2011
Description
Summary:Generic Haskell is an extension of Haskell that supports datatype-generic programming. The central idea of Generic Haskell is to interpret a type by a function, the so-called instance of a generic function at that type. Since types in Haskell include parametric types such as `list of', Generic Haskell represents types by terms of the simply-typed lambda calculus. This paper puts the idea of interpreting types as functions on a firm theoretical footing, exploiting the fact that the simply-typed lambda calculus can be interpreted in a cartesian closed category. We identify a suitable target category, a subcategory of Cat, and argue that slice, coslice and comma categories are a good fit for interpreting generic functions at base types.