[Haskell-cafe] Relevance and applicability of category theory

Dan Weston westondan at imageworks.com
Wed Jan 30 20:05:15 EST 2008

I assume you have read the references in

The penultimate sentence in question 1 below (role of adjoint functors 
in Haskell monads) was addressed by David Menendez in a recent post to 
this list:


There was discussion of Category theory monad <----> Haskell monad 
subsequent to the thread


A categorical approach to graph transformations with Haskell is 
described in:


There are several Haskell modules (named e.g. Category) floating around 
that attempt to better reflect categorical usage in Haskell, but I do 
not have a reference handy.


aaltman at pdx.edu wrote:
> Category theory seems to have an inconsistent relationship to Haskell - 
> both documentation and the language's implementations of categorical 
> concepts.  I come from a math background that makes the Haskell's tight 
> coupling to its mathematical foundation very appealing.  But, I may have 
> found some inconsistencies.  Whether you agree or not I hope we can get 
> some discussion going that will clarify the wikibooks, etc.
> My issues:
> 1. Are Haskell monads useful in a truly categorical sense?
> 2. Is Haskell's functor class misnamed?
> 3. Haskell arrows and Haskell monads have a misleading relationship
> 1. Categorical monads are a class of functors, that is, morphisms on 
> Cat.  Haskell's monads are at least a bit closer to the categorical idea 
> than Haskell's functors by virtue of having the same domain and 
> codomain: Hask -> Hask.  I think applicability of Haskell monads beyond 
> sequencing computation, and the validity of their definition, would be 
> much more clear if someone explained the meaning of adjoint functors to 
> and from Hask.  In other words, provide the mathematical 
> characterization to make Haskell monads a precise representation of 
> categorical monads on Hask.
> 2. Functors are structure preserving maps in the category Cat.  The 
> Haskell Functor class represents structure preserving maps in the 
> category Hask, which seem to me more like the categorical notion of 
> arrows or the algebraic notion of homomorphisms.  If we talk about 
> functors relating to Haskell, it seems more likely we'd be referring to 
> functors to or from the category Hask than functions (or arrows or 
> whatever) between elements of Hask.  Maybe categorical functors are 
> useful as an abstract characterization of programs themselves: a program 
> defines a functor from the problem domain into Hask, or from Hask into 
> output in a problem domain.  The name "Arrow" is already taken; what 
> about renaming Functor to Automorphism?
> 3. I believe the documentation stating that Haskell arrows are a 
> generalization of Haskell monads, but arrows are a categorical thing too 
> and in that context bear a much more distant relationship to monads.  
> Does a Haskell arrow have Hask as domain and codomain?  Or is one 
> particular element in Hask its domain and possibly another its 
> codomain?  Those are not at all the same thing.
> My guess is that the concept of Hask is too murky to be any use right 
> now.  The documentation may be more clear by avoiding it until we work 
> out a formal definition... or is there one already?
>  - Aaron Altman
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list