| Safe Haskell | Safe-Inferred |
|---|---|
| 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) | |
| Applicative m => Applicative (Topic m) |
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.