DarkCthulhu_: I'll use what I'm doing as an example. In Haskell, data types are basically combinations of the following operators: sum (Either), product (tuples), exponentials (functions). If you define a type constructor only in terms of sums and products of its type variables, then what you get is called a polynomial functor. A polynomial functor, just like polynomials functions in calculus, has
a derivative. This derivative is another polynomial functor.