
2008/8/13 Bayley, Alistair
First, monad /= imperative It is important to establish this distinction which doesn't seem to be very clear in some minds...
I think Matthias Felleisen probably understands this, but I could be wrong...
I think so too, but we're on Haskell-beginners and the formulation was much too ambiguous to let it pass, I would prefer that beginners in Haskell don't start with the idea that Monad are always imperative, it's already too current a misunderstanding.
I had a quick scan of the SOE source and it looks as though all of the graphics operations are in IO (). I don't see why you couldn't rearrange it so that describing shapes was purely functional, while rendering was still IO () (required by OpenGL, I assume), but it looks like it could be quite a bit of work.
That's unfortunate. Of course IO (or some FRP hiding the IO) is still required to do the rendering, but it would be much nicer to split those concerns. -- Jedaï