Skip to content

make newBroadcastTChanIO match newBroadcastTChan

While looking through the pull requests for stm-chans I came across a discrepancy in the new stm. Namely, we have the following definitions:

  • stm == 2.4
    newBroadcastTChan :: STM (TChan a)
    newBroadcastTChan = do
        dummy_hole <- newTVar TNil
        write_hole <- newTVar TNil
        read <- newTVar dummy_hole
        write <- newTVar write_hole
        return (TChan read write)

    newBroadcastTChanIO :: IO (TChan a)
    newBroadcastTChanIO = do
        dummy_hole <- newTVarIO TNil
        write_hole <- newTVarIO TNil
        read <- newTVarIO dummy_hole
        write <- newTVarIO write_hole
        return (TChan read write)
  • stm == 2.4.2
    newBroadcastTChan :: STM (TChan a)
    newBroadcastTChan = do
        write_hole <- newTVar TNil
        read <- newTVar (error ...)
        write <- newTVar write_hole
        return (TChan read write)

    newBroadcastTChanIO :: IO (TChan a)
    newBroadcastTChanIO = do
        dummy_hole <- newTVarIO TNil
        write_hole <- newTVarIO TNil
        read <- newTVarIO dummy_hole
        write <- newTVarIO write_hole
        return (TChan read write)

Thus, whoever changed the definition of newBroadcastTChan in 2.4.2 forgot to change newBroadcastTChanIO to keep it in sync.

PROPOSAL: I propose changing newBroadcastTChanIO to match newBroadcastTChan.

ACCEPTED: +1: wren ng thornton, Edward Kmett, John Wiegley; -1: noone.

http://www.haskell.org/pipermail/libraries/2013-May/019808.html

Trac metadata
Trac field Value
Version 7.6.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information