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

4 days 12 hours ago

1 week 2 days ago

1 week 3 days ago

1 week 3 days ago

2 weeks 1 day ago

2 weeks 4 days ago

2 weeks 4 days ago

2 weeks 4 days ago

3 weeks 6 days ago

4 weeks 1 day ago