
On 3/26/11 8:11 PM, Bas van Dijk wrote:
On 26 March 2011 22:02, wren ng thornton
wrote: Perhaps the solution at this stage would be to:
(1) add modifyMVarM :: MVar a -> (a -> IO (a,b)) -> IO b (2) deprecate modifyMVar (3) wait a cycle (4) remove modifyMVar (if needed) (5) wait a cycle (if needed) (6) add modifyMVar :: MVar a -> (a -> a) -> IO ()
It'll take forever, but I think it's important to get the names right for this kind of thing rather than letting the inconsistency linger. Of course, this would best be done through a separate proposal IMO.
I agree this should be done in a separate proposal. But while we're talking about it: what's the reason for the extra wait cycle in (5)? Can't we just replace (4),(5) and (6) with a single point where we undeprecate modifyMVar and change its type to the final: MVar a -> (a -> a) -> IO () ?
Because I don't recall the finer points of the deprecation protocol. I added steps (4) and (5) just in case the protocol says they're needed. I'd much rather drop them if that's allowed :) -- Live well, ~wren