I'm trying to write a functor that extends a user-supplied polymorphic variant type (PVT). How do you declare the user's type in the signature for the argument to the functor without locking in the individual variant definitions? The code below (in revised syntax) generates an error message that says the type isn't a PVT. code: > module type Reader = sig type ast; end; > > module Make (Read: Reader) = struct > type ast = [= Read.ast | `Lid of string]; > end; message: > Error: The type Read.ast is not a polymorphic variant type How do you make ast a PVT while allowing the user to specify the variants?