2.10 Differentiating Generic Functions