[Haskell-cafe] Why Kleisli composition is not in the Monad signature?
oleg at okmij.org
oleg at okmij.org
Tue Oct 23 10:28:37 CEST 2012
Andreas Abel wrote:
> I tell them that monads are for sequencing effects; and the
> sequencing is visible clearly in
>
> (>>) :: IO a -> IO b -> IO b
> (>>=) :: IO a -> (a -> IO b) -> IO b
>
> but not in
>
> fmap :: (a -> b) -> IO a -> IO b
> join :: IO (IO a) -> IO a
Indeed! I'd like to point out an old academic paper that was written
exactly on the subject at hand: how Category Theory monads relate to
monads in Haskell. Here is the relevant quotation:
Monads are typically equated with single-threadedness, and are
therefore used as a technique for incorporating imperative features
into a purely functional language. Category theory monads have little
to do with single-threadedness; it is the sequencing imposed by
composition that ensures single-threadedness. In a Wadler-ised monad
this is a consequence of bundling the Kleisli star and flipped compose
into the bind operator. There is nothing new in this connection. Peter
Landin in his Algol 60 used functional composition to model
semi-colon. Semi-colon can be thought of as a state transforming
operator that threads the state of the machine throughout a program.
The work of Peyton-Jones and Wadler has turned full circle back to
Landin's earlier work as their use of Moggi's sequencing monad enables
real side-effects to be incorporated into monad operations such as
print.
Quoted from: Sec 3: An historical aside
Jonathan M. D. Hill and Keith Clarke:
An Introduction to Category Theory, Category Theory Monads,
and Their Relationship to Functional Programming. 1994.
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.6497
I'd like to stress: the single-threadedness, the trick that lets us
embed imperative language into a pure one, has *little to do* with
category-theoretic monads with their Klesli star.
The web page
http://okmij.org/ftp/Computation/IO-monad-history.html
describes the work of Landin in detail, contrasting Landin's and
Peyton-Jones' papers.
More information about the Haskell-Cafe
mailing list