Date type supporting infinity
t() :: %InfiniteTimes.InfDate{ date: %Date{calendar: term(), day: term(), month: term(), year: term()}, finitness: :finite } | %InfiniteTimes.InfDate{date: nil, finitness: :infinity | :neg_infinity}
compare(t(), t()) :: :lt | :eq | :gt
is?(:lt | :lte | :eq | :gte | :gt, t(), t()) :: boolean()
new(atom()) :: t()