Haskell Redux-y Virtual-Dom-y Thanger
note: You shouldn't use this. I'm just having fun.
- The command pattern has been replaced with a free monad for a more flexible mutation grammer.
- State is held within an MVar for blocking state mutation. If an action runs async it may only read/write atomically.
- The free monad aproach allows for "middleware-like" redux features to be expressed in the command grammer. Async can be implemented within the grammer itself. Example: Redeux.Command.Async implements a composable grammer for expressing synchronous and asynchronous commands.