Summary
ZIO Prelude includes several data types to help us model our domains more accurately and solve common problems.
- Equivalence - A description of an equivalence relationship between two data types.
 - NonEmptyList - A list that is guaranteed to be non-empty to more accurately model situations where we know a collection has at least one element.
 - These - A data type that may either be a 
Leftwith anA, aRightwith aB, or aBothwith anAand aB, useful for modeling problems such as merging streams of data. - Validation - A data type that may be either a success or an accumulation of one or more errors, allowing modeling multiple failures for applications such as data validation.
 - ZSet - A generalization of a set that generalizes measures of "how many" of an element exist in a set, supporting multi-sets, "fuzzy" sets, and other data structures.
 - ZValidation - A generalization of 
Validationthat allows maintaining a log of warnings in addition to accumulating errors. 
