projects
/
ghc-base.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1307901
)
Derived Eq instance for Chan
author
Bas van Dijk
<v.dijk.bas@gmail.com>
Thu, 25 Nov 2010 21:02:40 +0000
(21:02 +0000)
committer
Bas van Dijk
<v.dijk.bas@gmail.com>
Thu, 25 Nov 2010 21:02:40 +0000
(21:02 +0000)
Control/Concurrent/Chan.hs
patch
|
blob
|
history
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