RxSwift Tag

Difference from other architectures
Elm - pretty close, feedback loops for effects instead of Cmd, which effects to perform are encoded into state and querried by feedback loops
Redux - kind of like this, but

Terminology
Whenever the word "signal" or "(signal) producer" appears (derived from ReactiveCocoa), they mean "hot-observable" and "cold-observable".
Example
(Demo app is bundled in the project)
To make a state transition diagram like above with additional effects, follow these steps:
// 1. Define `State`s and `Input`s.
enum State {