Should we have primitive fill-once variables?

Carter Schonwald 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:
>
>> 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 at joachim-breitner.de
>>   http://www.joachim-breitner.de/
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180629/007112d2/attachment-0001.html>


More information about the ghc-devs mailing list