Nothing hinders you writing: StateT Game (StateT A IO)
or GameT mt = ErrorT Err (StateT Game (mt IO)) with mt being another Monad-Transformer Monad-Transformers can be quite tricky. The point is you don't have to create new Monad instances. On 29 Okt., 18:46, Dupont Corentin <corentin.dup...@gmail.com> wrote: > Thank you for your responses. I will look at monad transformers. > I already use them I think because actually I use something like StateT Game > IO a. > You mean I have to implement my own instance? > > Oh, can you call me Corentin? This is my name ;) > > Cheers, > Corentin > > On Fri, Oct 29, 2010 at 6:19 PM, steffen > <steffen.sier...@googlemail.com>wrote: > > > > > > > > > > > > Horribly enough this one seems to work... > > > > mapOnBofA :: SB a -> SA a > > > mapOnBofA mf = get >>= \st@(A {b=temp}) -> > > > let (ans,temp2) = runState mf temp > > > in put (st { b=temp2}) >> return ans > > > There is nothing horrible about that. You just run a new isolated > > computation in the State Monad for B and use its results. More or less > > see same solution as Dupont's. > > > @Dupont: > > telling from your possible use case and your last post with your "MAP"- > > Problem, these two are very similar. You have a monad and inside your > > monad you temporarily want to run some computation in another Monad. I > > think Monad-Transformers are maybe the better option for you > > (especially your interpreter-Problem was a good use case for StateT/ > > ErrorT instead of State and some Either inside it...). > > > On 29 Okt., 17:35, Stephen Tetley <stephen.tet...@gmail.com> wrote: > > > 2010/10/29 Dupont Corentin <corentin.dup...@gmail.com>: > > > > > Also, I can't manage to write the more generic function SB x -> SA x. > > > > However, I'd have to question why you want both SA and SB as state > > > functional types. Having inner runState's is sometimes good practice > > > (its an instance of the Local Effect pattern identified by Ralf > > > Laemmel and Joost Visser), but if you have it "commonly" I'd suspect > > > you design is somehow contrived and could be simplified. > > > _______________________________________________ > > > Haskell-Cafe mailing list > > > haskell-c...@haskell.orghttp:// > >www.haskell.org/mailman/listinfo/haskell-cafe > > _______________________________________________ > > Haskell-Cafe mailing list > > haskell-c...@haskell.org > >http://www.haskell.org/mailman/listinfo/haskell-cafe > > > > _______________________________________________ > Haskell-Cafe mailing list > haskell-c...@haskell.orghttp://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe