module type CALCULABLE = sig type t val add: t -> t -> t val sub: t -> t -> t val mult: t -> t -> t val div: t -> t -> t val floor: t -> t val of_int: int -> t val to_int: t -> int val to_float: t -> float end module Make(C:CALCULABLE): sig (** Create a date from a year month day *) val get_julian_day : int -> int -> int -> C.t (** Return the year, month and day from a date *) val date_from_julian_day : C.t -> int * int * int val time_from_julian_day : C.t -> int * int * C.t val from_string: string -> C.t (** Print out the date *) val to_string: C.t -> string end