Haskell and algebra

Gustavo Villavicencio gustavov@ucse.edu.ar
Mon, 11 Aug 2003 10:40:23 -0300 (ART)


Hi all,

I am trying to understand the algebraic laws and operators
behind a functional expression. So, for example, I can
understand that the standard length function is a catamorphism,

(| [_0, succ . \pi_2] |)

where _0 is a constant function, . is the
function composition, \pi_2 is a projection, and
[] is a coproduct. Obviously, the type is
1 + A x A* -> Int ([A] -> Int in haskell).

But, what about the actions? Behind these we have
monads like algebraic structures. So, in the next
expression

f >>= g

where we suppose that there is a T monad (endofunctor)
involved, we can assume that

f : a -> T b, g : b -> T c and g* : T b -> T c.

therefore

f >>= g \equiv g* . f

in the Kleisli Star context. Is this right? If it is so,
can I combine g*.f with a fork for example?
gustavo