| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Ros.Topic
Description
The ROS Topic type and basic operations on Topics.
Note: Many of these operations have the same names as similar operations on lists in the Prelude. The ambiguity may be resolved using either qualification (e.g. import qualified Ros.TopicUtil as T), an explicit import list, or a hiding clause.
- newtype Topic m a = Topic {}
- head :: Functor m => Topic m a -> m a
- uncons :: Topic m a -> m (a, Topic m a)
- force :: Monad m => Topic m a -> m (Topic m a)
- cons :: Monad m => a -> Topic m a -> Topic m a
- tail :: Monad m => Topic m a -> Topic m a
- tails :: Monad m => Topic m a -> Topic m (Topic m a)
- filter :: Monad m => (a -> Bool) -> Topic m a -> Topic m a
- take :: Monad m => Int -> Topic m a -> m [a]
- take_ :: Monad m => Int -> Topic m a -> m ()
- drop :: Monad m => Int -> Topic m a -> Topic m a
- dropWhile :: Monad m => (a -> Bool) -> Topic m a -> Topic m a
- takeWhile :: Monad m => (a -> Bool) -> Topic m a -> m [a]
- break :: Monad m => (a -> Bool) -> Topic m a -> m ([a], Topic m a)
- splitAt :: Monad m => Int -> Topic m a -> m ([a], Topic m a)
- catMaybes :: Monad m => Topic m (Maybe a) -> Topic m a
- repeatM :: Monad m => m a -> Topic m a
- unfold :: Functor m => (b -> m (a, b)) -> b -> Topic m a
- newtype IterCont a b = IterCont (Maybe b, a -> IterCont a b)
- newtype IterContM m a b = IterContM (Maybe b, a -> m (IterContM m a b))
- yield :: b -> (a -> IterCont a b) -> IterCont a b
- skip :: (a -> IterCont a b) -> IterCont a b
- yieldM :: Monad m => b -> (a -> m (IterContM m a b)) -> m (IterContM m a b)
- skipM :: Monad m => (a -> m (IterContM m a b)) -> m (IterContM m a b)
- metamorph :: Monad m => (a -> IterCont a b) -> Topic m a -> Topic m b
- metamorphM :: Monad m => (a -> m (IterContM m a b)) -> Topic m a -> Topic m b
- bimetamorph :: Monad m => (a -> IterCont a b) -> (a -> IterCont a b) -> Topic m a -> Topic m b
- bimetamorphM :: Monad m => (a -> m (IterContM m a b)) -> (a -> m (IterContM m a b)) -> Topic m a -> Topic m b
- bimetamorphE :: Monad m => (a -> IterCont a b) -> (a -> IterCont a c) -> Topic m a -> Topic m (Either b c)
- bimetamorphME :: Monad m => (a -> m (IterContM m a b)) -> (a -> m (IterContM m a c)) -> Topic m a -> Topic m (Either b c)
- join :: (Functor m, Monad m) => Topic m (m a) -> Topic m a
- forever :: Monad m => Topic m a -> m b
- mapM :: (Functor m, Monad m) => (a -> m b) -> Topic m a -> Topic m b
- mapM_ :: Monad m => (a -> m ()) -> Topic m a -> m ()
- scan :: Monad m => (a -> b -> a) -> a -> Topic m b -> Topic m a
- showTopic :: (MonadIO m, Functor m, Show a) => Topic m a -> Topic m ()
Documentation
A Topic is an infinite stream of values that steps between values in a Monad.
Instances
| Functor m => Functor (Topic m) Source | |
| Applicative m => Applicative (Topic m) Source |
force :: Monad m => Topic m a -> m (Topic m a) Source
Force evaluation of a topic until it produces a value.
take_ :: Monad m => Int -> Topic m a -> m () Source
Run a Topic for the specified number of iterations, discarding the values it produces.
drop :: Monad m => Int -> Topic m a -> Topic m a Source
drop n t returns the suffix of t after the first n elements.
dropWhile :: Monad m => (a -> Bool) -> Topic m a -> Topic m a Source
dropWhile p t returns the suffix of t after all elements satisfying predicate p have been dropped.
takeWhile :: Monad m => (a -> Bool) -> Topic m a -> m [a] Source
takeWhile p t returns the longest prefix (possibly empty) of t all of whose elements satisfy the predicate p.
break :: Monad m => (a -> Bool) -> Topic m a -> m ([a], Topic m a) Source
break p t returns a tuple whose first element is the longest prefix (possibly empty) of t all of whose elements satisfy the predicate p, and whose second element is the remainder of the Topic.
splitAt :: Monad m => Int -> Topic m a -> m ([a], Topic m a) Source
splitAt n t returns a tuple whose first element is the prefix of t of length n, and whose second element is the remainder of the Topic.
repeatM :: Monad m => m a -> Topic m a Source
Repeatedly execute a monadic action feeding the values into a Topic.
A pair of an optional value and a continuation for producing more such pairs. This type is used by metamorph to implement a streaming unfold . fold composition.
newtype IterContM m a b Source
A pair of an optional value and a continuation with effects for producing more such pairs. This type is used by metamorphM to implement a streaming unfold . fold composition.
yield :: b -> (a -> IterCont a b) -> IterCont a b Source
Yield a value and a continuation in a metamorphism (used with metamorph).
skip :: (a -> IterCont a b) -> IterCont a b Source
Do not yield a value, but provide a continuation in a metamorphism (used with metamorph).
yieldM :: Monad m => b -> (a -> m (IterContM m a b)) -> m (IterContM m a b) Source
Yield a value and a continuation in a monad as part of a monadic metamorphism (used with metamorphM).
skipM :: Monad m => (a -> m (IterContM m a b)) -> m (IterContM m a b) Source
Do not yield a value, but provide a continuation in a metamorphism (used with metamorphM).
metamorph :: Monad m => (a -> IterCont a b) -> Topic m a -> Topic m b Source
A metamorphism (cf. Jeremy Gibbons) on Topics. This is an unfold following a fold (i.e. unfoldr . foldl), with the expectation that partial results of the unfold may be returned before the fold is completed. The supplied function produces a optional value and a continuation when applied to an element of the first Topic. The value is returned by the new Topic if it is not Nothing, and the continuation is used to produce the rest of the returned Topic.
metamorphM :: Monad m => (a -> m (IterContM m a b)) -> Topic m a -> Topic m b Source
Similar to metamorph, but the metamorphism may have effects.
bimetamorph :: Monad m => (a -> IterCont a b) -> (a -> IterCont a b) -> Topic m a -> Topic m b Source
bimetamorphM :: Monad m => (a -> m (IterContM m a b)) -> (a -> m (IterContM m a b)) -> Topic m a -> Topic m b Source
bimetamorphE :: Monad m => (a -> IterCont a b) -> (a -> IterCont a c) -> Topic m a -> Topic m (Either b c) Source
bimetamorphME :: Monad m => (a -> m (IterContM m a b)) -> (a -> m (IterContM m a c)) -> Topic m a -> Topic m (Either b c) Source
join :: (Functor m, Monad m) => Topic m (m a) -> Topic m a Source
Removes one level of monadic structure from the values a Topic produces.
mapM :: (Functor m, Monad m) => (a -> m b) -> Topic m a -> Topic m b Source
Map a monadic action over a Topic.
mapM_ :: Monad m => (a -> m ()) -> Topic m a -> m () Source
Map a monadic action of a Topic purely for its side effects. This function will never return.