[Haskell-cafe] monads and groups -- instead of loops

Cale Gibbard cgibbard at gmail.com
Wed Aug 1 16:57:08 EDT 2007


On 01/08/07, Greg Meredith <lgreg.meredith at biosimilarity.com> wrote:
> Haskellians,
>
> Though the actual metaphor in the monads-via-loops doesn't seem to fly with
> this audience, i like the spirit of the communication and the implicit
> challenge: find a pithy slogan that -- for a particular audience, like
> imperative programmers -- serves to uncover the essence of the notion. i
> can't really address that audience as my first real exposure to programming
> was scheme and i moved into concurrency and reflection after that and only
> ever used imperative languages as means to an end. That said, i think i
> found another metaphor that summarizes the notion for me. In the same way
> that the group axioms organize notions of symmetry, including addition,
> multiplication, reflections, translations, rotations, ... the monad(ic
> axioms) organize(s) notions of snapshot (return) and update (bind),
> including state, i/o, control, .... In short
>
> group : symmetry :: monad : update
>
> Best wishes,
>
> --greg

Hello,

I just wrote
http://www.haskell.org/haskellwiki/Monads_as_computation
after starting to reply to this thread and then getting sidetracked
into writing a monad tutorial based on the approach I've been taking
in the ad-hoc tutorials I've been giving on #haskell lately. :)

It might be worth sifting through in order to determine an anthem for monads.

Something along the lines of:
"monads are just a specific kind of {embedded domain specific
language, combinator library}"
would work, provided that the person you're talking to knows what one
of those is. :) I've found it very effective to explain those in
general and then explain what a monad is in terms of them.

I'm not certain that the article is completely finished. I'm a bit
tired at the moment, and will probably return to polish the treatment
some more when I'm more awake, but I think it's finished enough to
usefully get the main ideas across.

 - Cale


More information about the Haskell-Cafe mailing list