val make :
?descr:string ->
name:string ->
destruct:(string -> ('a, string) Pervasives.result) ->
construct:('a -> string) ->
unit ->
'a arg
type descr = {
name : string;
descr : string option;
}
val like : 'a arg -> ?descr:string -> string -> 'a arg
type ('a, 'b) eq =
| Eq : ('a, 'a) eq
val eq : 'a arg -> 'b arg -> ('a, 'b) eq option