Functional reactive programming library for Emacs Lisp
This is a rough draft of an FRP library for Emacs Lisp. I'm working from a number of inspirations, primarily ReactiveCocoa and Elm.
(defvar key-signal (lifted:signal-for-key (kbd "C-c s")))
(funcall key-signal
:map (lambda (value) (float-time))
:defer
:map (lambda (value) (round value))
:filter (lambda (value) (= (% value 2) 0))
:subscribe-next (lambda (value)
(message "subscriber reporting even rounded timestamp: %s" value)))
lifted:defer
lifted:filter
lifted:flatten
lifted:flatten-map
lifted:map
lifted:merge
There's a ton left to do!
- many more functional operators
- more diverse deferral options
- multicasting
- signal disposal
- error handling
- throttling/debouncing
- sequences & cold signals
- possibly reducing the number of
funcall
s - cask build
- getting on MELPA