observable
observable copied to clipboard
Make your actions observable and listen events from them, algebraically.
Make your actions to be observable and listen to events from them, algebraically.
Let's imagine simple example: we want to listen to STDIN. We have getLine function that can capture a list of ASCII-symbols - all we need is to make this action to be observable.
obs :: Monad f => f a -> Observable f a r
Good, now we want to subscribe on events and set up callback, if we want to listen to events forever, we need subscribe function:
subscribe :: Applicative f => Observable f a r -> (a -> f r) -> f r
First, we make action to be observable, then set up callback and at the end, subscribe on events:
subscribe (obs getLine) handler
Our handler will count amount of characters in strings and send this into STDOUT:
handler = print . (<>) "Length of string was: " . show . length
Let's try it out:
> hello, my dear friend!
> "Length of string was: 22"