Move drop(f) out of the individual type routines and into eval instead.

This simplifies the type routines which return new values for repeatability.