# Changelog
## 0.1.0.0 (2020-02-29)
Inital version
### Additions
- `MonadChoice`
- Created `MonadChoice` typeclass to represent that allow choices to be made by some arbitrary entity.
- Added function `chooseM`.
- Added instances for the `ChoiceT` both covariant and invariant.
- Added instance for `MonadRandom` instances by using the `uniform` function.
- Added various passthrough instances
- `MaybeT`
- `ExceptT`
- `IdentityT`
- `StateT` either lazy or strict
- `ReaderT`
- `WriterT` either constant space, lazy, or strict
- `AccumT`
- `ContT`
- `RWST` either constant space, lazy, strict
- `SelectT`
- `ChoiceT`
- Added two different versions of `ChoiceT`, one a covariant functor, the other an invariant functor on the category of monads.
- Shared additions:
- Function `runChoiceT`
- Instances for `Functor`, `Applicative`, `Monad`, `MonadTrans`, and `MonadChoice`
- Various passthrough instances
- `MonadReader`
- `MonadState`
- `MonadWriter`
- `MonadRWS`
- `MonadIO`
- `Covariant.ChoiceT`
- Added functions `mapChoiceT` and `runBacktrackableChoiceT`.
- `Invariant.ChoiceT`
- Exposed constructor `ChoiceT`.
- Added function `invmapChoiceT`.
- Added various passthrough instances.
- `Contravariant`
- `Invariant`
- `Alternative`
- `MonadPlus`
- `MonadError`
- `Choice`
- Added two different versions of `Choice` which of type aliases for each `ChoiceT` over the `Identity` monad.
- Added function `runChoice` for each version.
- For `Covariant.Choice` added functions `runChoiceM` and `runBacktrackableChoiceT`.