We're reading Learn You a Haskell for Great Good!  at the office's non-fiction book club! This covers the second two parts o f chapter 11 (Functors, Applicative Functors and Monoids)  —  from the section entitled 'The newtype keyword' and onwards. Legend  Regular text summarizes a point the document made.  Italicize d font expresses my terrible, terrible opinions or attempts at explanation. Highlighted    text indicates that this note was important to my understanding, and if it's italicized, then I even thought of it myself!  Notes The newtype keyword Recap Data = ADT Type = type synonym <*> can logically        have different implementations for e.g. a list Such as ZipList vs [] Adding additional typeclass       instances for a type Can  be done by wrapping the        existing type in a `data` with a single constructor. Use a record to make it         easier to extract contents. Downside: slight perf         overhead. Use newtype: wraps an        existing ...