Some data-structures describe the state of an application. Those structures should not be freely modifiable.
Instead, they should be provided with `Action`s.
**An action is a piece of data that describes how the state of the program should change.**
An action can be *applied* to a datastructure.