The warning should pose a useful question to you. Why do you need this Nan constructor if you’re never actually using it to construct values of mixrampd_t?
A simple example that explain the motivation behind warning 37 is
module M: sig
type t
val f: t -> unit
end = struct
type t = A
let f A = ()
end
Warning 37: constructor A is never used to build values.
(However, this constructor appears in patterns.)
The fact that the signature constraint of M makes the type t abstract (or hide it) is a crucial part: due to this signature outside of the definition of M it is not possible to access the variant constructor A . Consequently, M.A can never be constructed and the constructor could be removed without any trouble.
@bobbypriambodo, you are right, the example of @octachron illustrates totally my problem :). I made my type abstract in my mli.
@rgrinberg, its an interface for a client library. It is to the user to both use the Nan or Seconds constructors, that is why the compilator complains: there is no way to use those constructors with mixrampd_t abstract.