Skip to content
Snippets Groups Projects
Verified Commit 6922e905 authored by Legy (Beini)'s avatar Legy (Beini)
Browse files

Add the class MonadBlock and some basic mtl instances for it

parent c05cc78e
No related branches found
No related tags found
1 merge request!3Cpu block
...@@ -105,14 +105,27 @@ instance (MonadBarIO m, Monoid a) => MonadBarIO (WriterT a m) where ...@@ -105,14 +105,27 @@ instance (MonadBarIO m, Monoid a) => MonadBarIO (WriterT a m) where
askBar :: MonadBarIO m => m Bar askBar :: MonadBarIO m => m Bar
askBar = liftBarIO $ lift ask askBar = liftBarIO $ lift ask
mkBlockState :: BlockOutput -> BlockState
mkBlockState blockOutput = Just (blockOutput, Nothing)
updateBlock :: BlockOutput -> Block () class (MonadBarIO m) => MonadBlock m where
updateBlock blockOutput = yield $ Just (blockOutput, Nothing) liftBlock :: Block a -> m a
instance MonadBlock Block where
liftBlock = id
instance (MonadBlock m) => MonadBlock (StateT a m) where
liftBlock = lift . liftBlock
instance (MonadBlock m) => MonadBlock (ReaderT a m) where
liftBlock = lift . liftBlock
instance (MonadBlock m, Monoid a) => MonadBlock (WriterT a m) where
liftBlock = lift . liftBlock
updateBlock :: MonadBlock m => BlockOutput -> m ()
updateBlock blockOutput = liftBlock . yield $ Just (blockOutput, Nothing)
updateBlock' :: MonadBlock m => BlockEventHandler -> BlockOutput -> m ()
updateBlock' blockEventHandler blockOutput = liftBlock . yield $ Just (blockOutput, Just blockEventHandler)
updateBlock' :: BlockEventHandler -> BlockOutput -> Block ()
updateBlock' blockEventHandler blockOutput = yield $ Just (blockOutput, Just blockEventHandler) mkBlockState :: BlockOutput -> BlockState
mkBlockState blockOutput = Just (blockOutput, Nothing)
updateEventHandler :: BlockEventHandler -> BlockState -> BlockState updateEventHandler :: BlockEventHandler -> BlockState -> BlockState
updateEventHandler _ Nothing = Nothing updateEventHandler _ Nothing = Nothing
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment