Hi,
when reading the subject I was expecting something like this:
-- | Creates an empty IVar
newIVar :: IO (IVar a)
-- | pure! but blocks until the IVar is written
readIVar :: IVar a -> a
-- | tries to write to an IVar.
-- Succeeds if it is empty (returning True)
-- Does nothing if it has been written to (returning False)
writeIVar :: IVar a -> a -> IO Bool
Alternatively:
-- | all in one
newIVar :: IO (a, a -> IO Bool)
Essentially a thunk, but with explicit control over filling it.
In fact, people have implemented something like this using C-- hacks
before: https://github.com/twanvl/unsafe-sequence
> This would make MonadFix's implementation much nicer, I think :)
This would suffice for MonadFix, right?
Sorry for derailing the thread :-)
Cheers,
Joachim
--
Joachim Breitner
mail@joachim-breitner.de
http://www.joachim-breitner.de/
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs