The first thing I tackled what was Sussman and Wisdom call "tuples".
Their tuples come in two varieties, up and down. These basically correspond to contravariant and covariant vectors in differential geometry except that they are recursive (a component of a vector may be another vector).
A literate doctest explaining how the tuples
modules works is at https://github.com/jtauber/functional-differential-geometry/blob/master/tuples.rst