# Changing a light bulb.

**Jay Cox
**
sqrtofone@yahoo.com

*Thu, 28 Feb 2002 21:48:07 -0600 (CST)*

On Thu, 28 Feb 2002, Shawn P. Garbett wrote:
>* -----BEGIN PGP SIGNED MESSAGE-----
*>* Hash: SHA1
*>*
*>* Now after my earlier soap box tirade I'm trying to put my code where my mouth
*>* is. >>blush<< It's harder than I thought.
*>*
*>* I've broken it down into a State Model of a light bulb. The goal, to find out
*>* just how much Haskell code does it take to change the state of a light bulb?
*>*
*>* Here's a very crippled version. Is there an easy way to introduce state
*>* without changing the type of main???
*
Rhe IO monad IS a state monad without fetch and assign.
(I'd hate to see it written in the traditional \s -> (s,v) sense, one
fetch of the state gives you gigabytes of information that is on the
computer, and then you'd have to include at least part of the 2^whatever
bytes on all the other computers on the internet. Oh yeah, did i mention
if you actually interface such a monad with reality, the state would have
to include every bit of information with in the universe! Imagine, all of
that dumped out, all with one single fetch!)
:*-)
*
</Joke>
>* I've written a much more complex example, but I got into things like
*>*
*>* main :: STT(IO)
*>*
*>* using a monad transformer.
*
I did similar not to long ago on one of these lists, but it was more of an
example of using a monad transformer for another goal.
>* So really, the big question is, must I use a monad transformer?
*
I'm confused as to what your goal is :)
(plus I don't know where your previous post is).
It doesn't seem like all that much code. Much of it is the definition of
the state monad.
Jay Cox