Should we have primitive fill-once variables?
Joachim Breitner
mail at joachim-breitner.de
Fri Jun 29 15:51:07 UTC 2018
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/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180629/cde764c4/attachment.sig>
More information about the ghc-devs
mailing list