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?