What do people think of this idea -- of allowing functors to be expanded? Ideally, expanding a functor would allow for both replacing its argument type (as in the example I gave) and for adding a second/third functor argument type (so Map.Make(OrderedType) would become Map.Make(OrderedType)(Show).