Hi all,

I'm new to Haskell, and I've found its approach to imperative
programming (monad) quite interesting; but there are some problems
with this, partly already mentioned by Philip Wadler in his paper "How
to Declare an Imperative": using his words, there no way to move
smoothly from no monad (no interaction), to one monad (a single form of
interaction), to many monad (several independent forms of
interaction).

I'm looking for a way to solve these problems: I've a couple of idea,
but I now need a collection of Monad for testing them; so far, I've
found only this types of Monads:

- IO
- ST
- Maybe  (modeling exception)
- List   (modeling nondeterminism)

The only combined monad I've seen is the Parse monad (a combination of
ST and List).

The questions are:

- Are there other interesting Monads or Combined Monads to consider?

- In Haskell is there some way to combine IO and ST?  
In example, suppose I want to define a function that take a reference,
update it and then print the updated value:

    f :: STRef s Int -> ?? ()
    f r = do x <- readSTRef r
             putStrLn (show x)

- By chance, is someone already working on this?

Thanks,

-- 
Diego Dainese

P.S.
Sorry for my bad English

Reply via email to