On 2/2/07, Chad Scherrer <[EMAIL PROTECTED]> wrote:
So in reality, I'm trying to construct something like
f :: (a -> STM b) -> STM (a -> b)

I just figured it was a general monadic kind of problem, more simply
expressed using lists. But the (!!) solution doesn't make sense in
this context.

Perhaps this will work for you:

f x = join . liftM f

This typechecks, and seems to work as expected, e.g.:

Prelude Control.Concurrent.STM Control.Monad> atomically (f readTVar
(newTVar 'a'))
'a'

/g

--
It is myself I have never met, whose face is pasted on the underside of my mind.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to