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

5 hours 27 min ago

8 hours 46 min ago

2 days 3 hours ago

2 days 4 hours ago

2 days 10 hours ago

2 days 12 hours ago

2 days 20 hours ago

2 days 20 hours ago

2 days 21 hours ago

2 days 23 hours ago