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 + -
显示快捷键?