Should we have primitive fill-once variables?
carter.schonwald at gmail.com
Fri Jun 29 16:20:07 UTC 2018
*first write first
On Fri, Jun 29, 2018 at 12:19 PM Carter Schonwald <
carter.schonwald at 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 at joachim-breitner.de> wrote:
>> 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
>> -- | 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 :-)
>> Joachim Breitner
>> mail at joachim-breitner.de
>> ghc-devs mailing list
>> ghc-devs at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ghc-devs