>"Writing a toy differentiator turns out to be shockingly easy. It’s a near verbatim transcription of differentiation rules from any calculus textbook:<p>D[_?NumberQ, x_Symbol] = 0;<p>D[x_, x_Symbol] = 1;<p>D[Times[expr1_, expr2_], x_Symbol] =
D[expr1, x] expr2 + D[expr2, x] expr1;<p>D[Plus[expr1_, expr2_], x_Symbol] = D[expr1, x] + D[expr2, x];<p>D[Sin[x_], x_Symbol] = Cos[x];<p>D[Cos[x_], x_Symbol] = -Sin[x];<p>D[f_Symbol[expr_], x_Symbol] :=
(D[f[x], x] /. x -> expr) * D[expr, x];<p>D[Power[expr_, p_Integer], x_Symbol] := p expr^(p - 1) * D[expr, x]; "<p>Absolutely brilliant! And simple! And terse! And brilliant!