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

I'm confused. It seems for me that either I don't understand math or I don't understand you.

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.

Well, Haskell monad, you know, consists of three parts: 1) a map m:Ob(Hask) -> Ob(Hask) (by Ob I mean the class of objects of a category); 2) a morphism X -> m(X) for all X's, and 3) a map from Hask(X,m(Y)) to Hask(m(X),m(Y)) - that is, from the set of morphisms X- >m(Y) to the set of morphisms m(X)->m(Y) - for all X's and Y's. That is, I believe, what's called a 'Kleisli triple' in math; it's well known that Kleisli triples are equivalent to monads (in mathematical sense).

2. Functors are structure preserving maps in the category Cat. The Haskell Functor class represents structure preserving maps in the category Hask

What do you mean? A Haskell Functor, first of all, maps types to types - that is, objects of Hask to objects of Hask. Therefore, it becomes a math functor from Hask to Hask.

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?

Of course not. They have Haskell objects as domains and codomains. I mean, by defining an Arrow class, you really define another category, which has the same objects as Hask, but different morphisms (arrows).

Or is one particular element in Hask its domain and possibly another its codomain?

What do you mean by 'element in Hask'? Hask is a category, it has objects, it has morphisms (arrows), but elements?
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to