Safe Haskell | Safe-Inferred |
---|
Reactive.Bacon.Core
- class Observable s where
- data EventStream a = EventStream {
- subscribe :: EventSink a -> IO Disposable
- type EventSink a = Event a -> IO HandleResult
- data Event a
- data HandleResult
- type Disposable = IO ()
- class EventSource s where
- toEventStream :: s a -> EventStream a
- obs :: EventSource s => s a -> EventStream a
- neverE :: EventStream a
- toObserver :: (a -> IO ()) -> EventSink a
- toEventObserver :: (Event a -> IO ()) -> EventSink a
- data Property a = Property {
- addPropertyListener :: PropertySink a -> IO Disposable
- class PropertySource s where
- toProperty :: s a -> Property a
- data PropertyEvent a
- type PropertySink a = PropertyEvent a -> IO HandleResult
Documentation
class Observable s whereSource
Instances
Observable Property | |
Observable EventStream | |
Observable PushCollection |
data EventStream a Source
Constructors
EventStream | |
Fields
|
Instances
Functor EventStream | |
EventSource EventStream | |
Observable EventStream | |
Eq a => Eq (EventStream a) | |
Show a => Show (EventStream a) |
type EventSink a = Event a -> IO HandleResultSource
data HandleResult Source
type Disposable = IO ()Source
class EventSource s whereSource
Methods
toEventStream :: s a -> EventStream aSource
Instances
EventSource EventStream | |
EventSource PushCollection |
obs :: EventSource s => s a -> EventStream aSource
neverE :: EventStream aSource
toObserver :: (a -> IO ()) -> EventSink aSource
toEventObserver :: (Event a -> IO ()) -> EventSink aSource
Reactive property. Differences from EventStream: - addListener function must always deliver the latest known value to the new listener
So a Property is roughly an EventStream that stores its latest value so that it is always available for new listeners. Doesn't mean it has to be up to date if it has been without listeners for a while.
Constructors
Property | |
Fields
|
data PropertyEvent a Source
type PropertySink a = PropertyEvent a -> IO HandleResultSource