X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Control%2FConcurrent%2FChan.hs;h=e06e0cb7a237f5636183495ae9aab72ab627d6d2;hb=3310565c512605a71d52f44c4fe645c7ae92786d;hp=dfc46c38cbb3e77342291e2b6b6d1a4fcafb04ac;hpb=1307901a3528834b706eb9336bd0a3ba88fe09f3;p=ghc-base.git diff --git a/Control/Concurrent/Chan.hs b/Control/Concurrent/Chan.hs index dfc46c3..e06e0cb 100644 --- a/Control/Concurrent/Chan.hs +++ b/Control/Concurrent/Chan.hs @@ -46,6 +46,7 @@ import Data.Typeable data Chan a = Chan (MVar (Stream a)) (MVar (Stream a)) + deriving Eq INSTANCE_TYPEABLE1(Chan,chanTc,"Chan") @@ -93,6 +94,9 @@ readChan (Chan readVar _) = do -- either channel from then on will be available from both. Hence this creates -- a kind of broadcast channel, where data written by anyone is seen by -- everyone else. +-- +-- (Note that a duplicated channel is not equal to its original. +-- So: @fmap (c /=) $ dupChan c@ returns @True@ for all @c@.) dupChan :: Chan a -> IO (Chan a) dupChan (Chan _ writeVar) = do hole <- readMVar writeVar