channel.hs
来自「Cores are generated from Confluence a mo」· HS 代码 · 共 33 行
HS
33 行
-- | 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 + =
减小字号Ctrl + -
显示快捷键?