projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Derived Eq instance for Chan
[ghc-base.git]
/
Control
/
Concurrent
/
Chan.hs
diff --git
a/Control/Concurrent/Chan.hs
b/Control/Concurrent/Chan.hs
index
dfc46c3
..
e06e0cb
100644
(file)
--- 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))
data Chan a
= Chan (MVar (Stream a))
(MVar (Stream a))
+ deriving Eq
INSTANCE_TYPEABLE1(Chan,chanTc,"Chan")
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.
-- 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
dupChan :: Chan a -> IO (Chan a)
dupChan (Chan _ writeVar) = do
hole <- readMVar writeVar