<div dir="ltr">*first write first</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jun 29, 2018 at 12:19 PM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com">carter.schonwald@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">i'm a little confused, whats the order of reads here? <div>Mvars have write wins, whats the order here?  last writer runs first, first writer runs last? (wouldn't there be starvation issues?)</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jun 29, 2018 at 11:51 AM Joachim Breitner <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
when reading the subject I was expecting something like this:<br>
<br>
   -- | Creates an empty IVar<br>
   newIVar :: IO (IVar a)<br>
<br>
   -- | pure! but blocks until the IVar is written<br>
   readIVar :: IVar a -> a <br>
<br>
   -- | tries to write to an IVar. <br>
   -- Succeeds if it is empty (returning True)<br>
   -- Does nothing if it has been written to (returning False)<br>
   writeIVar :: IVar a -> a -> IO Bool <br>
<br>
Alternatively:<br>
<br>
   -- | all in one<br>
   newIVar :: IO (a, a -> IO Bool)<br>
<br>
<br>
Essentially a thunk, but with explicit control over filling it.<br>
In fact, people have implemented something like this using C-- hacks<br>
before: <a href="https://github.com/twanvl/unsafe-sequence" rel="noreferrer" target="_blank">https://github.com/twanvl/unsafe-sequence</a><br>
<br>
> This would make MonadFix's implementation much nicer, I think :)<br>
<br>
This would suffice for MonadFix, right?<br>
<br>
Sorry for derailing the thread :-)<br>
<br>
Cheers,<br>
Joachim<br>
<br>
-- <br>
Joachim Breitner<br>
  <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
  <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div></blockquote></div>