Or we can go the OCaml route, admit that we want both applicative and generative functors, and add an explicit marker to the type-returning functions whether those generated types should always have unique identity, or not.