(→Foundations: : two links how category theory concepts are present in Haskell programming)
|Line 1:||Line 1:|
'''Category theory''' can be helpful in understanding Haskell's type system. There is a "Haskell category", of which the objects are Haskell types and the morphisms from types <hask>a</hask> to <hask>b</hask> are Haskell functions of type <hask>a -> b</hask>. Various other Haskell structures can be used make it a Cartesian closed category.
Revision as of 20:32, 11 June 2006Category theory can be helpful in understanding Haskell's type system. There is a "Haskell category", of which the objects are Haskell types and the morphisms from types
Michael Barr and Charles Wells: Toposes, Triples and Theories. The online free available book is both an introductory and a detailed description of category theory. By the way, it is also a category theoretical descripton of the concept of monad (the book uses another name instead of monad: triple).
HaWiki's CategoryTheory is also a good theoretical introduction, and besides that, it explains how concepts of category theory are important in Haskell programming.
2 Categorical programming
Catamorphisms and related concepts, categorical approach to functional programming, categorical programming. Many materials cited here refer to category theory, so as an introduction to this discipline see the #Foundations section.
- Erik Meijer, Maarten Fokkinga, Ross Paterson: Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. See also related documents (in the CiteSeer page). Understanding the article does not require a category theory knowledge -- a self-contained material on the concept of catamorphism, anamoprhism and other related concepts.
- Varmo Vene and Tarmo Uustalu: Functional Programming with Apomorphisms / Corecursion
- Varmo Vene: Categorical Programming with Inductive and Coinductive Types. The book accompanies the deep categorical theory topic with Haskell examples.
- Tatsuya Hagino: A Categorical Programming Language
- Charity, a categorical programming language implementation.
- Deeply uncurried products, as categorists might like them article mentions a conjecture: relatedness to Combinatory logic