
*first write first On Fri, Jun 29, 2018 at 12:19 PM Carter Schonwald < carter.schonwald@gmail.com> wrote:
i'm a little confused, whats the order of reads here? Mvars have write wins, whats the order here? last writer runs first, first writer runs last? (wouldn't there be starvation issues?)
On Fri, Jun 29, 2018 at 11:51 AM Joachim Breitner < mail@joachim-breitner.de> wrote:
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