Docs GODI Archive
Projects Blog Link DB

Look up function:

(e.g. "List.find" or "keysym")
More options
File lib/ocaml/pkg-lib/calendar/calendarLib.cmi_pretty GODI Package godi-calendar
Library calendar
 
   calendarLib.cmi_pretty    Sources  
module Period :
  sig
    type date_field = [ `Day | `Month | `Week | `Year ]
    module type S =
      sig
        type +'a period constraint 'a = [< date_field ]
        type t = date_field period
        val empty : [< date_field ] period
        val add : ([< date_field ] as 'a) period -> 'a period -> 'a period
        val sub : ([< date_field ] as 'a) period -> 'a period -> 'a period
        val opp : ([< date_field ] as 'a) period -> 'a period
        val equal : [< date_field ] period -> [< date_field ] period -> bool
        val compare : [< date_field ] period -> [< date_field ] period -> int
        val hash : [< date_field ] period -> int
      end
  end
module Date_sig :
  sig
    module type S =
      sig
        type field = Period.date_field
        type -'a date constraint 'a = [< field ]
        type t = field 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 : 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 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 -> 'a Period.period -> 'a date
        val sub :
          ([< field ] as 'a) date ->
          'a date -> [< field > `Day `Week ] Period.period
        val rem : ([< field ] as 'a) date -> 'a Period.period -> 'a date
        val next : ([< field ] as 'a) date -> 'a -> 'a date
        val prev : ([< field ] as 'a) date -> 'a -> '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
  end
module Time_sig :
  sig
    module type Second =
      sig
        type t
        val from_int : int -> t
        val from_float : float -> t
        val to_int : t -> int
        val to_float : t -> float
      end
    module type S =
      sig
        type t
        type field = [ `Hour | `Minute | `Second ]
        type 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 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
  end
module Calendar_sig :
  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 -> 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 -> 'a Date.Period.period
            exception Not_computable
            val to_time :
              ([< Period.date_field ] as 'a) period -> 'a Time.Period.period
            val safe_to_time :
              ([< `Day | `Week ] as 'a) period -> 'a 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 rem : t -> [< Period.date_field ] Period.period -> t
        val next : t -> field -> t
        val prev : t -> field -> t
      end
  end
module Utils :
  sig
    module type Comparable =
      sig
        type t
        val equal : t -> t -> bool
        val compare : t -> t -> int
        val hash : t -> int
      end
    module Int :
      sig
        type t = int
        val equal : t -> t -> bool
        val compare : t -> t -> int
        val hash : t -> int
      end
    module Float :
      sig
        type t = float
        val equal : t -> t -> bool
        val compare : t -> t -> int
        val hash : t -> int
        val set_precision : float -> unit
        val round : t -> int
      end
  end
module Time_Zone :
  sig
    type t = CalendarLib.Time_Zone.t = UTC | Local | UTC_Plus of int
    val current : unit -> t
    val change : t -> unit
    val gap : t -> t -> int
    val from_gmt : unit -> int
    val to_gmt : unit -> int
    val is_dst : unit -> bool
    val hour_of_dst : unit -> int
    val on : ('a -> 'b) -> t -> 'a -> 'b
  end
module Time :
  sig
    type t = CalendarLib.Time.t
    type field = [ `Hour | `Minute | `Second ]
    type second = int
    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 = 'a CalendarLib.Time.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
module Ftime :
  sig
    type t = CalendarLib.Ftime.t
    type field = [ `Hour | `Minute | `Second ]
    type second = float
    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 = 'a CalendarLib.Ftime.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
module Date :
  sig
    type field = Period.date_field
    type -'a date = 'a CalendarLib.Date.date constraint 'a = [< field ]
    type t = field date
    type day = CalendarLib.Date.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat
    type month =
      CalendarLib.Date.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 = 'a CalendarLib.Date.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 -> 'a Period.period -> 'a date
    val sub :
      ([< field ] as 'a) date ->
      'a date -> [< field > `Day `Week ] Period.period
    val rem : ([< field ] as 'a) date -> 'a Period.period -> 'a date
    val next : ([< field ] as 'a) date -> 'a -> 'a date
    val prev : ([< field ] as 'a) date -> 'a -> '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 Calendar_builder :
  sig
    module Make :
      functor (D : Date_sig.S) ->
        functor (T : Time_sig.S) ->
          sig
            module Date :
              sig
                type field = Period.date_field
                type -'a date = 'a 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 = 'a 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 -> 'a Period.period -> 'a date
                val sub :
                  ([< field ] as 'a) date ->
                  'a date -> [< field > `Day `Week ] Period.period
                val rem :
                  ([< field ] as 'a) date -> 'a Period.period -> 'a date
                val next : ([< field ] as 'a) date -> 'a -> 'a date
                val prev : ([< field ] as 'a) date -> 'a -> '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 = 'a 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 = CalendarLib.Calendar_builder.Make(D)(T).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 =
                    'a CalendarLib.Calendar_builder.Make(D)(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 > `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 -> 'a Date.Period.period
                exception Not_computable
                val to_time :
                  ([< Period.date_field ] as 'a) period ->
                  'a Time.Period.period
                val safe_to_time :
                  ([< `Day | `Week ] as 'a) period -> 'a 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 rem : t -> [< Period.date_field ] Period.period -> t
            val next : t -> field -> t
            val prev : t -> field -> t
          end
    module Make_Precise :
      functor (D : Date_sig.S) ->
        functor (T : Time_sig.S) ->
          sig
            module Date :
              sig
                type field = Period.date_field
                type -'a date = 'a 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 = 'a 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 -> 'a Period.period -> 'a date
                val sub :
                  ([< field ] as 'a) date ->
                  'a date -> [< field > `Day `Week ] Period.period
                val rem :
                  ([< field ] as 'a) date -> 'a Period.period -> 'a date
                val next : ([< field ] as 'a) date -> 'a -> 'a date
                val prev : ([< field ] as 'a) date -> 'a -> '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