The algebra (and calculus!) of algebraic data types

made by joel, submitted by vaibhavsagar
A simple question with a profound answer: what can we do with the derivative of an algebraic data type?