(OCaml 4.02 中引入)
生成式函子接受一个单元 () 参数。为了使用它,必须将其应用于此单元参数,以确保函子结果中的所有类型组件都以生成方式工作,即它们与通过相同函子的其他应用获得的类型不同。这等效于接受一个 sig end 签名的参数,并且始终应用于 struct end,但不是应用于某个已定义的模块(在后一种情况下,对同一模块应用两次将返回相同的类型)。
作为这种生成性的副作用,允许在生成式函子的主体中解包一级模块。