functor (D : Date_sig.S) (T : Time_sig.S->   sig     module Date :       sig         type field = Period.date_field         type -'a date = 'D.date constraint 'a = [< field ]         type t = field date         type day = D.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat         type month =           D.month =             Jan           | Feb           | Mar           | Apr           | May           | Jun           | Jul           | Aug           | Sep           | Oct           | Nov           | Dec         type year = int         exception Out_of_bounds         exception Undefined         val make : year -> int -> int -> t         val lmake : year:year -> ?month:int -> ?day:int -> unit -> t         val make_year : int -> [< `Year ] date         val make_year_month : int -> int -> [< `Month | `Year ] date         val today : unit -> t         val from_jd : int -> t         val from_mjd : int -> t         val from_day_of_year : year -> int -> t         val days_in_month : [< field > `Month `Year ] date -> int         val day_of_week : t -> day         val day_of_month : t -> int         val day_of_year : t -> int         val week : t -> int         val month : [< field > `Month ] date -> month         val year : [< field > `Year ] date -> year         val to_jd : t -> int         val to_mjd : t -> int         val equal : [< field ] date -> [< field ] date -> bool         val compare : [< field ] date -> [< field ] date -> int         val hash : [< field ] date -> int         val is_valid_date : year -> int -> int -> bool         val is_leap_day : t -> bool         val is_gregorian : t -> bool         val is_julian : t -> bool         val to_unixtm : t -> Unix.tm         val from_unixtm : Unix.tm -> t         val to_unixfloat : t -> float         val from_unixfloat : float -> t         val to_business : t -> year * int * day         val from_business : year -> int -> day -> t         val int_of_day : day -> int         val day_of_int : int -> day         val int_of_month : month -> int         val month_of_int : int -> month         module Period :           sig             type +'a p = 'D.Period.p constraint 'a = [< 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 -> t             val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> t             val year : int -> [< field > `Year ] period             val month : int -> [< field > `Month `Year ] period             val week : int -> [< field > `Day `Week ] period             val day : int -> [< field > `Day `Week ] period             exception Not_computable             val nb_days : [< field ] period -> int             val safe_nb_days : [< `Day | `Week ] period -> int             val ymd : [< field ] period -> int * int * int           end         val add : ([< field ] as 'a) date -> 'Period.period -> 'a date         val sub :           ([< field ] as 'a) date ->           'a date -> [< field > `Day `Week ] Period.period         val precise_sub : ([< field ] as 'a) date -> 'a date -> Period.t         val rem : ([< field ] as 'a) date -> 'Period.period -> 'a date         val next : ([< field ] as 'a) date -> '-> 'a date         val prev : ([< field ] as 'a) date -> '-> 'a date         val is_leap_year : year -> bool         val same_calendar : year -> year -> bool         val days_in_year : ?month:month -> year -> int         val weeks_in_year : year -> int         val week_first_last : int -> year -> t * t         val nth_weekday_of_month : year -> month -> day -> int -> t         val century : year -> int         val millenium : year -> int         val solar_number : year -> int         val indiction : year -> int         val golden_number : year -> int         val epact : year -> int         val easter : year -> t         val carnaval : year -> t         val mardi_gras : year -> t         val ash : year -> t         val palm : year -> t         val easter_friday : year -> t         val easter_saturday : year -> t         val easter_monday : year -> t         val ascension : year -> t         val withsunday : year -> t         val withmonday : year -> t         val corpus_christi : year -> t       end     module Time :       sig         type t = T.t         type field = [ `Hour | `Minute | `Second ]         type second = T.second         module Second :           sig             type t = second             val from_int : int -> t             val from_float : float -> t             val to_int : t -> int             val to_float : t -> float           end         val make : int -> int -> second -> t         val lmake : ?hour:int -> ?minute:int -> ?second:second -> unit -> t         val now : unit -> t         val midnight : unit -> t         val midday : unit -> t         val convert : t -> Time_Zone.t -> Time_Zone.t -> t         val from_gmt : t -> t         val to_gmt : t -> t         val normalize : t -> t * int         val hour : t -> int         val minute : t -> int         val second : t -> second         val to_seconds : t -> second         val to_minutes : t -> float         val to_hours : t -> float         val equal : t -> t -> bool         val compare : t -> t -> int         val hash : t -> int         val is_pm : t -> bool         val is_am : t -> bool         val from_seconds : second -> t         val from_minutes : float -> t         val from_hours : float -> t         module Period :           sig             type +'a period = 'T.Period.period               constraint 'a = [< Period.date_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 length : [< Period.date_field ] period -> second             val mul :               ([< Period.date_field ] as 'a) period -> 'a period -> 'a period             val div :               ([< Period.date_field ] as 'a) period -> 'a period -> 'a period             val make : int -> int -> second -> [< Period.date_field ] period             val lmake :               ?hour:int ->               ?minute:int ->               ?second:second -> unit -> [< Period.date_field ] period             val hour : int -> [< Period.date_field ] period             val minute : int -> [< Period.date_field ] period             val second : second -> [< Period.date_field ] period             val to_seconds : [< Period.date_field ] period -> second             val to_minutes : [< Period.date_field ] period -> float             val to_hours : [< Period.date_field ] period -> float           end         val add : t -> [< Period.date_field ] Period.period -> t         val sub : t -> t -> [< Period.date_field ] Period.period         val rem : t -> [< Period.date_field ] Period.period -> t         val next : t -> field -> t         val prev : t -> field -> t       end     type t     type day = Date.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat     type month =       Date.month =         Jan       | Feb       | Mar       | Apr       | May       | Jun       | Jul       | Aug       | Sep       | Oct       | Nov       | Dec     type year = Date.year     type second = Time.second     type field =         [ `Day | `Hour | `Minute | `Month | `Second | `Week | `Year ]     val make : int -> int -> int -> int -> int -> second -> t     val lmake :       year:int ->       ?month:int ->       ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t     val create : Date.t -> Time.t -> t     val now : unit -> t     val from_jd : float -> t     val from_mjd : float -> t     val convert : t -> Time_Zone.t -> Time_Zone.t -> t     val to_gmt : t -> t     val from_gmt : t -> t     val days_in_month : t -> int     val day_of_week : t -> day     val day_of_month : t -> int     val day_of_year : t -> int     val week : t -> int     val month : t -> month     val year : t -> int     val to_jd : t -> float     val to_mjd : t -> float     val hour : t -> int     val minute : t -> int     val second : t -> second     val equal : t -> t -> bool     val compare : t -> t -> int     val hash : t -> int     val is_leap_day : t -> bool     val is_gregorian : t -> bool     val is_julian : t -> bool     val is_pm : t -> bool     val is_am : t -> bool     val to_unixtm : t -> Unix.tm     val from_unixtm : Unix.tm -> t     val to_unixfloat : t -> float     val from_unixfloat : float -> t     val from_date : Date.t -> t     val to_date : t -> Date.t     val to_time : t -> Time.t     module Period :       sig         type +'a period constraint 'a = [< Period.date_field ]         type t = Period.date_field period         val empty : [< Period.date_field ] period         val add :           ([< Period.date_field > `Day `Week ] as 'a) period ->           'a period -> 'a period         val sub :           ([< Period.date_field > `Day `Week ] as 'a) period ->           'a period -> 'a period         val opp :           ([< Period.date_field > `Day `Week ] 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 -> int -> int -> second -> t         val lmake :           ?year:int ->           ?month:int ->           ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t         val year : int -> [< Period.date_field > `Year ] period         val month : int -> [< Period.date_field > `Month `Year ] period         val week : int -> [< Period.date_field > `Day `Week ] period         val day : int -> [< Period.date_field > `Day `Week ] period         val hour : int -> [< Period.date_field > `Day `Week ] period         val minute : int -> [< Period.date_field > `Day `Week ] period         val second : second -> [< Period.date_field > `Day `Week ] period         val from_date :           ([< Period.date_field ] as 'a) Date.Period.period -> 'a period         val from_time :           ([< Period.date_field ] as 'a) Time.Period.period -> 'a period         val to_date : ([< Date.field ] as 'a) period -> 'Date.Period.period         exception Not_computable         val to_time :           ([< Period.date_field ] as 'a) period -> 'Time.Period.period         val safe_to_time :           ([< `Day | `Week ] as 'a) period -> 'Time.Period.period         val ymds : [< Period.date_field ] period -> int * int * int * second       end     val add : t -> [< Period.date_field ] Period.period -> t     val sub : t -> t -> [< Period.date_field > `Day `Week ] Period.period     val precise_sub : t -> t -> Period.t     val rem : t -> [< Period.date_field ] Period.period -> t     val next : t -> field -> t     val prev : t -> field -> t   end