Kalani Thielen's The Algebra of Data, and the Calculus of Mutation is a *very* good explanation of ADTs, and also scratches the surfaces of Zippers:

With the spreading popularity of languages like F# and Haskell, many people are encountering the concept of an algebraic data type for the first time. When that term is produced without explanation, it almost invariably becomes a source of confusion. In what sense are data types algebraic? Is there a one-to-one correspondence between the structures of high-school algebra and the data types of Haskell? Could I create a polynomial data type? Do I have to remember the quadratic formula? Are the term-transformations of (say) differential calculus meaningful in the context of algebraic data types? Isnâ€™t this all just a bunch of general abstract nonsense?

(hat tip to Daniel Yokomizo, who used to be an LtU member...)

## Recent comments

1 hour 11 min ago

3 hours 7 min ago

7 hours 48 min ago

17 hours 11 min ago

1 day 41 min ago

1 day 3 hours ago

2 days 8 hours ago

2 days 20 hours ago

4 days 26 min ago

4 days 5 hours ago