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