sig   module type S =     sig       module Date : Date_sig.S       module Time : Time_sig.S       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 -> Calendar_sig.S.second -> Calendar_sig.S.t       val lmake :         year:int ->         ?month:int ->         ?day:int ->         ?hour:int ->         ?minute:int ->         ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.t       val create : Date.t -> Time.t -> Calendar_sig.S.t       val now : unit -> Calendar_sig.S.t       val from_jd : float -> Calendar_sig.S.t       val from_mjd : float -> Calendar_sig.S.t       val convert :         Calendar_sig.S.t -> Time_Zone.t -> Time_Zone.t -> Calendar_sig.S.t       val to_gmt : Calendar_sig.S.t -> Calendar_sig.S.t       val from_gmt : Calendar_sig.S.t -> Calendar_sig.S.t       val days_in_month : Calendar_sig.S.t -> int       val day_of_week : Calendar_sig.S.t -> Calendar_sig.S.day       val day_of_month : Calendar_sig.S.t -> int       val day_of_year : Calendar_sig.S.t -> int       val week : Calendar_sig.S.t -> int       val month : Calendar_sig.S.t -> Calendar_sig.S.month       val year : Calendar_sig.S.t -> int       val to_jd : Calendar_sig.S.t -> float       val to_mjd : Calendar_sig.S.t -> float       val hour : Calendar_sig.S.t -> int       val minute : Calendar_sig.S.t -> int       val second : Calendar_sig.S.t -> Calendar_sig.S.second       val equal : Calendar_sig.S.t -> Calendar_sig.S.t -> bool       val compare : Calendar_sig.S.t -> Calendar_sig.S.t -> int       val hash : Calendar_sig.S.t -> int       val is_leap_day : Calendar_sig.S.t -> bool       val is_gregorian : Calendar_sig.S.t -> bool       val is_julian : Calendar_sig.S.t -> bool       val is_pm : Calendar_sig.S.t -> bool       val is_am : Calendar_sig.S.t -> bool       val to_unixtm : Calendar_sig.S.t -> Unix.tm       val from_unixtm : Unix.tm -> Calendar_sig.S.t       val to_unixfloat : Calendar_sig.S.t -> float       val from_unixfloat : float -> Calendar_sig.S.t       val from_date : Date.t -> Calendar_sig.S.t       val to_date : Calendar_sig.S.t -> Date.t       val to_time : Calendar_sig.S.t -> Time.t       module Period :         sig           type +'a period constraint 'a = [< Period.date_field ]           type t = Period.date_field Calendar_sig.S.Period.period           val empty : [< Period.date_field ] Calendar_sig.S.Period.period           val add :             ([< Period.date_field > `Day `Week ] as 'a)             Calendar_sig.S.Period.period ->             'Calendar_sig.S.Period.period ->             'Calendar_sig.S.Period.period           val sub :             ([< Period.date_field > `Day `Week ] as 'a)             Calendar_sig.S.Period.period ->             'Calendar_sig.S.Period.period ->             'Calendar_sig.S.Period.period           val opp :             ([< Period.date_field > `Day `Week ] as 'a)             Calendar_sig.S.Period.period -> 'Calendar_sig.S.Period.period           val equal :             [< Period.date_field ] Calendar_sig.S.Period.period ->             [< Period.date_field ] Calendar_sig.S.Period.period -> bool           val compare :             [< Period.date_field ] Calendar_sig.S.Period.period ->             [< Period.date_field ] Calendar_sig.S.Period.period -> int           val hash :             [< Period.date_field ] Calendar_sig.S.Period.period -> int           val make :             int ->             int ->             int ->             int -> int -> Calendar_sig.S.second -> Calendar_sig.S.Period.t           val lmake :             ?year:int ->             ?month:int ->             ?day:int ->             ?hour:int ->             ?minute:int ->             ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.Period.t           val year :             int ->             [< Period.date_field > `Year ] Calendar_sig.S.Period.period           val month :             int ->             [< Period.date_field > `Month `Year ]             Calendar_sig.S.Period.period           val week :             int ->             [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period           val day :             int ->             [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period           val hour :             int ->             [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period           val minute :             int ->             [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period           val second :             Calendar_sig.S.second ->             [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period           val from_date :             ([< Period.date_field ] as 'a) Date.Period.period ->             'Calendar_sig.S.Period.period           val from_time :             ([< Period.date_field ] as 'a) Time.Period.period ->             'Calendar_sig.S.Period.period           val to_date :             ([< Date.field ] as 'a) Calendar_sig.S.Period.period ->             'Date.Period.period           exception Not_computable           val to_time :             ([< Period.date_field ] as 'a) Calendar_sig.S.Period.period ->             'Time.Period.period           val safe_to_time :             ([< `Day | `Week ] as 'a) Calendar_sig.S.Period.period ->             'Time.Period.period           val ymds :             [< Period.date_field ] Calendar_sig.S.Period.period ->             int * int * int * Calendar_sig.S.second         end       val add :         Calendar_sig.S.t ->         [< Period.date_field ] Calendar_sig.S.Period.period ->         Calendar_sig.S.t       val sub :         Calendar_sig.S.t ->         Calendar_sig.S.t ->         [< Period.date_field > `Day `Week ] Calendar_sig.S.Period.period       val precise_sub :         Calendar_sig.S.t -> Calendar_sig.S.t -> Calendar_sig.S.Period.t       val rem :         Calendar_sig.S.t ->         [< Period.date_field ] Calendar_sig.S.Period.period ->         Calendar_sig.S.t       val next : Calendar_sig.S.t -> Calendar_sig.S.field -> Calendar_sig.S.t       val prev : Calendar_sig.S.t -> Calendar_sig.S.field -> Calendar_sig.S.t     end end