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

9 hours 20 min ago

11 hours 28 min ago

18 hours 43 min ago

23 hours 42 min ago

23 hours 53 min ago

1 day 1 hour ago

1 day 8 hours ago

1 day 10 hours ago

1 day 13 hours ago

1 day 13 hours ago