# User:Duplode/Foldable and Traversable plan

## FoldableEdit

- foldr revisited (deconstructing foldr, the monoidal heart of a fold, folding as querying/summarising, understanding vs. implementation)
- The Foldable class (the relation with lists, tons of generalised methods, pick-your-monoid folding. Exercise about mapM_)
- Folding in a list-like way. (Can we say there is a list-likeness to the monoidal structure? Opt.: lists as the free monoid?)
- From "can I get this by going down the list in such-and-such-a-way" to "can I express what I want as a monoidal query?" (cf. the specialised folds in Data.Foldable)
- concat routes to Foldable via msum and asum (does this have to do with the alternative-monoid connection?)

- (Possibly talk about Set - foldable but not a functor.)
- (Is there a way to talk about monoid homomorphisms here?)

## TraversableEdit

(This is less well organised)

- "Special functors" (Identity, Const, Compose)
- "But traverse looks like a map. What does it have to do with traversal?"
- (Is this right?: Traversal involves a monoidal summary on an applicative context. (And that's what sequenceA does?)(Can the Monoidal presentation help with that?))
- Recovering Foldable and Functor
- (folding destroys structure, traverse preserves it, and adds an extra layer on top. (But you can destroy it anyway if you ask nicely.)
- Traversable laws (how to discuss them?)
- (How to explain sequenceA?)
- Examples, examples, examples.
- (Make sense of mapAccum* somehow? It does look like State in a very disguised form.)
- Interpreting stuff in terms of monoids and functors.
- GHC
`deriving`

extensions.