Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module introduces ResamplingBuffer
s,
which are primitives that consume and produce data at different rates.
Just as schedules form the boundaries between different clocks,
(resampling) buffers form the boundaries between
synchronous signal functions ticking at different speeds.
Synopsis
- type ResBuf m cla clb a b = ResamplingBuffer m cla clb a b
- data ResamplingBuffer m cla clb a b = ResamplingBuffer {
- put :: TimeInfo cla -> a -> m (ResamplingBuffer m cla clb a b)
- get :: TimeInfo clb -> m (b, ResamplingBuffer m cla clb a b)
- hoistResamplingBuffer :: (Monad m1, Monad m2) => (forall c. m1 c -> m2 c) -> ResamplingBuffer m1 cla clb a b -> ResamplingBuffer m2 cla clb a b
- module FRP.Rhine.Clock
Documentation
type ResBuf m cla clb a b = ResamplingBuffer m cla clb a b Source #
A type synonym to allow for abbreviation.
data ResamplingBuffer m cla clb a b Source #
A stateful buffer from which one may get
a value,
or to which one may put
a value,
depending on the clocks.
ResamplingBuffer
s can be clock-polymorphic,
or specific to certain clocks.
m
: Monad in which theResamplingBuffer
may have side effectscla
: The clock at which data enters the bufferclb
: The clock at which data leaves the buffera
: The input typeb
: The output type
ResamplingBuffer | |
|
hoistResamplingBuffer :: (Monad m1, Monad m2) => (forall c. m1 c -> m2 c) -> ResamplingBuffer m1 cla clb a b -> ResamplingBuffer m2 cla clb a b Source #
Hoist a ResamplingBuffer
along a monad morphism.
module FRP.Rhine.Clock