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 ...