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

17 weeks 8 hours ago

17 weeks 12 hours ago

17 weeks 12 hours ago

39 weeks 1 day ago

43 weeks 3 days ago

45 weeks 20 hours ago

45 weeks 20 hours ago

47 weeks 5 days ago

1 year 2 days ago

1 year 2 days ago