Typ.Data_spec
type ('r_var, 'r_value, 'k_var, 'k_value) t =
| :: : ('var, 'value) typ * ('r_var, 'r_value, 'k_var, 'k_value) t -> ('r_var, 'r_value, 'var -> 'k_var, 'value -> 'k_value) t
| [] : ('r_var, 'r_value, 'r_var, 'r_value) t