sig   module type S =     sig       type field = Period.date_field       type -'a date constraint 'a = [< Date_sig.S.field ]       type t = Date_sig.S.field Date_sig.S.date       type day = Sun | Mon | Tue | Wed | Thu | Fri | Sat       type month =           Jan         | Feb         | Mar         | Apr         | May         | Jun         | Jul         | Aug         | Sep         | Oct         | Nov         | Dec       type year = int       exception Out_of_bounds       exception Undefined       val make : Date_sig.S.year -> int -> int -> Date_sig.S.t       val lmake :         year:Date_sig.S.year ->         ?month:int -> ?day:int -> unit -> Date_sig.S.t       val make_year : int -> [< `Year ] Date_sig.S.date       val make_year_month : int -> int -> [< `Month | `Year ] Date_sig.S.date       val today : unit -> Date_sig.S.t       val from_jd : int -> Date_sig.S.t       val from_mjd : int -> Date_sig.S.t       val from_day_of_year : Date_sig.S.year -> int -> Date_sig.S.t       val days_in_month :         [< Date_sig.S.field > `Month `Year ] Date_sig.S.date -> int       val day_of_week : Date_sig.S.t -> Date_sig.S.day       val day_of_month : Date_sig.S.t -> int       val day_of_year : Date_sig.S.t -> int       val week : Date_sig.S.t -> int       val month :         [< Date_sig.S.field > `Month ] Date_sig.S.date -> Date_sig.S.month       val year :         [< Date_sig.S.field > `Year ] Date_sig.S.date -> Date_sig.S.year       val to_jd : Date_sig.S.t -> int       val to_mjd : Date_sig.S.t -> int       val equal :         [< Date_sig.S.field ] Date_sig.S.date ->         [< Date_sig.S.field ] Date_sig.S.date -> bool       val compare :         [< Date_sig.S.field ] Date_sig.S.date ->         [< Date_sig.S.field ] Date_sig.S.date -> int       val hash : [< Date_sig.S.field ] Date_sig.S.date -> int       val is_valid_date : Date_sig.S.year -> int -> int -> bool       val is_leap_day : Date_sig.S.t -> bool       val is_gregorian : Date_sig.S.t -> bool       val is_julian : Date_sig.S.t -> bool       val to_unixtm : Date_sig.S.t -> Unix.tm       val from_unixtm : Unix.tm -> Date_sig.S.t       val to_unixfloat : Date_sig.S.t -> float       val from_unixfloat : float -> Date_sig.S.t       val to_business :         Date_sig.S.t -> Date_sig.S.year * int * Date_sig.S.day       val from_business :         Date_sig.S.year -> int -> Date_sig.S.day -> Date_sig.S.t       val int_of_day : Date_sig.S.day -> int       val day_of_int : int -> Date_sig.S.day       val int_of_month : Date_sig.S.month -> int       val month_of_int : int -> Date_sig.S.month       module Period :         sig           type +'a p constraint 'a = [< Date_sig.S.field ]           type +'a period = 'a p constraint 'a = [< field ]           type t = Period.date_field period           val empty : [< Period.date_field ] period           val add :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val sub :             ([< Period.date_field ] as 'a) period -> 'a period -> 'a period           val opp : ([< Period.date_field ] as 'a) period -> 'a period           val equal :             [< Period.date_field ] period ->             [< Period.date_field ] period -> bool           val compare :             [< Period.date_field ] period ->             [< Period.date_field ] period -> int           val hash : [< Period.date_field ] period -> int           val make : int -> int -> int -> Date_sig.S.t           val lmake :             ?year:int -> ?month:int -> ?day:int -> unit -> Date_sig.S.t           val year : int -> [< Date_sig.S.field > `Year ] period           val month : int -> [< Date_sig.S.field > `Month `Year ] period           val week : int -> [< Date_sig.S.field > `Day `Week ] period           val day : int -> [< Date_sig.S.field > `Day `Week ] period           exception Not_computable           val nb_days : [< Date_sig.S.field ] period -> int           val safe_nb_days : [< `Day | `Week ] period -> int           val ymd : [< Date_sig.S.field ] period -> int * int * int         end       val add :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         'Date_sig.S.Period.period -> 'Date_sig.S.date       val sub :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         'Date_sig.S.date ->         [< Date_sig.S.field > `Day `Week ] Date_sig.S.Period.period       val precise_sub :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         'Date_sig.S.date -> Date_sig.S.Period.t       val rem :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         'Date_sig.S.Period.period -> 'Date_sig.S.date       val next :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         '-> 'Date_sig.S.date       val prev :         ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->         '-> 'Date_sig.S.date       val is_leap_year : Date_sig.S.year -> bool       val same_calendar : Date_sig.S.year -> Date_sig.S.year -> bool       val days_in_year : ?month:Date_sig.S.month -> Date_sig.S.year -> int       val weeks_in_year : Date_sig.S.year -> int       val week_first_last :         int -> Date_sig.S.year -> Date_sig.S.t * Date_sig.S.t       val nth_weekday_of_month :         Date_sig.S.year ->         Date_sig.S.month -> Date_sig.S.day -> int -> Date_sig.S.t       val century : Date_sig.S.year -> int       val millenium : Date_sig.S.year -> int       val solar_number : Date_sig.S.year -> int       val indiction : Date_sig.S.year -> int       val golden_number : Date_sig.S.year -> int       val epact : Date_sig.S.year -> int       val easter : Date_sig.S.year -> Date_sig.S.t       val carnaval : Date_sig.S.year -> Date_sig.S.t       val mardi_gras : Date_sig.S.year -> Date_sig.S.t       val ash : Date_sig.S.year -> Date_sig.S.t       val palm : Date_sig.S.year -> Date_sig.S.t       val easter_friday : Date_sig.S.year -> Date_sig.S.t       val easter_saturday : Date_sig.S.year -> Date_sig.S.t       val easter_monday : Date_sig.S.year -> Date_sig.S.t       val ascension : Date_sig.S.year -> Date_sig.S.t       val withsunday : Date_sig.S.year -> Date_sig.S.t       val withmonday : Date_sig.S.year -> Date_sig.S.t       val corpus_christi : Date_sig.S.year -> Date_sig.S.t     end end