********************* Chapter 16 Outline ********************* * 16.1 Functor * 16.2 What's a functor? * 16.3 There's a whole lot of fmap goin' round * 16.4 Let's talk about f baby * 16.4.1 Shining star come into view * 16.4.2 Exercises: Be Kind * 1 * 2 * 3 * 16.4.3 A shining star for you to see * 16.4.4 Functor is function application * 16.4.5 A shining star for you to see what your f can truly be * 16.4.6 Type classes and constructor classes * 16.5 Functor Laws * 16.5.1 Identity * 16.5.2 Composition * 16.5.3 Structure preservation * 16.6 The Good, the Bad, and the Ugly * 16.6.1 Composition should just work * 16.7 Commonly used functors * 16.7.1 The functors are stacked and that's a fact * 16.7.2 What if we lift twice? * 16.7.3 Wait, how does that even typecheck? * 16.7.4 Lift me baby one more time * 16.7.5 The real type of thing going down * 16.7.6 Get on up and get down * 16.7.7 One more round for the P-Funkshun * 16.7.8 Stay on the scene like an fmap machine * 16.7.9 Exercises: Heavy Lifting * 16.8 Transforming the unapplied type argument * 16.9 QuickCheck Functor instances * 16.10 Exercises: Instances of Func * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 16.11 Ignoring possibilities * 16.11.1 Maybe * 16.11.2 Exercise: Possibility * 16.11.3 Either * 16.11.4 Short Exercise * 1 * 2 * 16.12 A somewhat surprising functor * 16.13 More structure, more functors * 16.14 IO Functor * 16.15 What if we want to do something different? * 16.16 Functor are unique to a datatype * 16.17 Chapter exercises These exercises do not have titles, like previous chapters, but they do have subordinate elements, so I'm listing the problem description here, instead. * 16.17.1 Determine if a valid Functor can be written for the datatype provided * 1 * 2 * 3 * 4 * 5 * 16.17.2 Rearrange the arguments to the type constructor of the datatype so the functor instances works. * 1 * 2 * 3 * 16.17.3 Write Functor instances for the following datatype * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 16.18 Definitions * Higher-kinded polymorphism * Functor * Lifting * George Clinton (the musician) * 16.19 Follow-up resources * Haskell Wikibook; The Functor Class * Mark P. Jones; A system of constructor classes: overloading and implicit higher-order polymorphism * Gabriel Gonzalez; The functor design pattern