📄 channel.hs
字号:
-- | A channel is a uni-directional communication link between two asynchronous processes.module Language.Atom.Common.Channel ( Channel , channel , writeChannel , readChannel ) whereimport Language.Atom-- | A channel is a uni-directional communication link that ensures one read for every write.data Channel a = Channel a (Var Bool)-- | Creates a new channel, with a given name and data.channel :: Name -> a -> System (Channel a)channel name a = do hasData <- bool name False return $ Channel a hasData-- | Write data to a 'Channel'. A write will only suceed if the 'Channel' is empty.writeChannel :: Channel a -> Action ()writeChannel (Channel _ hasData) = do when $ inv $ value hasData hasData <== true -- | Read data from a 'Channel'. A read will only suceed if the 'Channel' has data to be read.readChannel :: Channel a -> Action areadChannel (Channel a hasData) = do when $ value hasData hasData <== false return a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -