# General Purpose Newtype Wrappers **A zoo of `newtype` wrappers.** * [newtype-zoo on Hackage](https://hackage.haskell.org/package/newtype-zoo) In everyday Haskell programming newtype wrappers occur again and again, to convey some extra meaning for the maintainer of the code, and to prevent mixing up parameters to functions with the same type. For example: ```haskell applyConfiguration :: MyConfig -> MyConfig -> IO MyConfig ``` What the user actually wanted to express was: ```haskell applyConfiguration :: Wanted MyConfig -> Current MyConfig -> IO (Active MyConfig) ``` This simple library contains a list of simple newtype wrappers: * [`Active`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Active.html) * [`Allocated`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Allocated.html) * [`Broken`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Broken.html) * [`Cached`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Cached.html) * [`Complete`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Complete.html) * [`Completed`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Completed.html) * [`Consistent`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Consistent.html) * [`Current`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Current.html) * [`Disabled`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Disabled.html) * [`Enabled`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Enabled.html) * [`Established`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Established.html) * [`Existing`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Existing.html) * [`Failed`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Failed.html) * [`Inconsistent`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Inconsistent.html) * [`Invalid`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Invalid.html) * [`Marked`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Marked.html) * [`Missing`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Missing.html) * [`Multiple`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Multiple.html) * [`Needed`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Needed.html) * [`New`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-New.html) * [`Next`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Next.html) * [`Obsolete`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Obsolete.html) * [`Offered`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Offered.html) * [`Old`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Old.html) * [`Partial`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Partial.html) * [`Pending`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Pending.html) * [`Previous`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Previous.html) * [`Proposed`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Proposed.html) * [`Rejected`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Rejected.html) * [`Remaining`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Remaining.html) * [`Replied`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Replied.html) * [`Required`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Required.html) * [`Requested`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Requested.html) * [`Responded`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Responded.html) * [`Single`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Single.html) * [`Unchecked`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Unchecked.html) * [`Unwanted`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Unwanted.html) * [`Updated`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Updated.html) * [`Valid`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Valid.html) * [`Wanted`](https://hackage.haskell.org/package/newtype-zoo/docs/NewtypeZoo-Wanted.html) They live in the sub directory `NewtypeZoo`, e.g. `NewtypeZoo.Active`.