[Xmonad] Re: Xmonad no longer compile since latest darcs pull

Andy Gimblett A.M.Gimblett at swansea.ac.uk
Fri Aug 17 07:45:23 EDT 2007

On Fri, Aug 17, 2007 at 10:38:12AM +0200, Kai Grossjohann wrote:
> The part that I'm having trouble with is monads and the associated
> operators (liftm comes to mind, it seems to be somehow related).  I
> read Hal Daume's tutorial.  Do you have advice what else I can read
> to grok?
> (And I'm having trouble to understand the relationship between "<-"
> and "=".  Apparently, "<-" somehow implies that "statements" are
> "executed" in some order.

Sort of, but only really because it gives a name to the result of a
computation, which might get used later (at which point the result
needs to be known, so the computation needs to have been performed).
Order of execution in Haskell is _always_ ultimately decided by data
dependencies - whether you're in a monad or not.

> But Haskell tries really hard to hide the fact that there are
> statements and that there is such as thing as execution.

Well, there aren't statements really, so it doesn't have to try at
all.  ;-)

You might possibly find useful some slides I wrote for a talk I gave
locally about monads.  It's not perfect or the whole story, and will
surely becoming increasingly embarassing to me the more I learn (I'm
already cringing at several parts) - in particular I made the classic
mistake of confusing "I sort of understand the I/O monad" with "I sort
of understand monads".

However, it might help.  It might at least help you get to grips with
the difference between = and <- in do blocks (and when to use each
form - see slide 15), and also liftM (slide 17).  :-)




Andy Gimblett
Computer Science Department
University of Wales Swansea

More information about the Xmonad mailing list