[Haskell-cafe] Still stacking monad transformers

Andrew Coppin andrewcoppin at btinternet.com
Sun Oct 12 13:08:22 EDT 2008


I am becoming extremely frustrated now. The task I want to perform is 
simple, yet I simply cannot make Haskell do what I want.

I've given up hope of ever getting my program to handle infinite result 
sets. That means I can make do with just ListT. So I have the following 
monad:

  type MyMonad x = StateT MyState (ListT Identity) x

Now I'm trying to run two computations, starting from _the same state_, 
and combine the two resulting lists. The trouble is, I am literally 
losing the will to live trying to comprehend the whinings of the type 
checker. The operation I'm trying to perform is perfectly simple; I 
don't understand why this has to be so damned *difficult*! >_<

Any suggestions?

I found that by using the brief and easily memorable construction 
"runIdentity $ runListT $ runStateT foo state" I can get at the result 
set for each action, and combine them. But nothing in hell seems to 
transform this from [((), MyState)] back into MyMonad ().



More information about the Haskell-Cafe mailing list