Higher-order modules and separate compilation
Higher-order functors are a natural and popular extension to the ML module system. Because functors can do nontrivial transformations ("type actions") on types including generativity and formal functor component actions, a higher-order module system must specify how much these type actions are propagated through functor application. The design space for higher-order module systems include non-propagating functors, applicative functors, fully transparent generative functors (SML/NJ's variant). In this talk, I will describe this design space and various implications on separate compilation and the signature calculus.