{-# LANGUAGE Safe #-}moduleData.Time.Calendar.CalendarDiffDays(-- * Calendar DurationmoduleData.Time.Calendar.CalendarDiffDays ,)whereimportControl.DeepSeqimportData.DatadataCalendarDiffDays =CalendarDiffDays {CalendarDiffDays -> Integer cdMonths ::Integer,CalendarDiffDays -> Integer cdDays ::Integer}deriving(CalendarDiffDays -> CalendarDiffDays -> Bool (CalendarDiffDays -> CalendarDiffDays -> Bool) -> (CalendarDiffDays -> CalendarDiffDays -> Bool) -> Eq CalendarDiffDays forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: CalendarDiffDays -> CalendarDiffDays -> Bool $c/= :: CalendarDiffDays -> CalendarDiffDays -> Bool == :: CalendarDiffDays -> CalendarDiffDays -> Bool $c== :: CalendarDiffDays -> CalendarDiffDays -> Bool Eq,-- | @since 1.9.2Data,-- | @since 1.9.2Typeable)instanceNFDataCalendarDiffDays wherernf :: CalendarDiffDays -> () rnf(CalendarDiffDays Integer m Integer d )=Integer -> () forall a. NFData a => a -> () rnfInteger m () -> () -> () `seq`Integer -> () forall a. NFData a => a -> () rnfInteger d () -> () -> () `seq`()-- | AdditiveinstanceSemigroupCalendarDiffDays whereCalendarDiffDays Integer m1 Integer d1 <> :: CalendarDiffDays -> CalendarDiffDays -> CalendarDiffDays <>CalendarDiffDays Integer m2 Integer d2 =Integer -> Integer -> CalendarDiffDays CalendarDiffDays (Integer m1 Integer -> Integer -> Integer forall a. Num a => a -> a -> a +Integer m2 )(Integer d1 Integer -> Integer -> Integer forall a. Num a => a -> a -> a +Integer d2 )-- | AdditiveinstanceMonoidCalendarDiffDays wheremempty :: CalendarDiffDays mempty=Integer -> Integer -> CalendarDiffDays CalendarDiffDays Integer 0Integer 0mappend :: CalendarDiffDays -> CalendarDiffDays -> CalendarDiffDays mappend=CalendarDiffDays -> CalendarDiffDays -> CalendarDiffDays forall a. Semigroup a => a -> a -> a (<>)instanceShowCalendarDiffDays whereshow :: CalendarDiffDays -> String show(CalendarDiffDays Integer m Integer d )=String "P"String -> ShowS forall a. [a] -> [a] -> [a] ++Integer -> String forall a. Show a => a -> String showInteger m String -> ShowS forall a. [a] -> [a] -> [a] ++String "M"String -> ShowS forall a. [a] -> [a] -> [a] ++Integer -> String forall a. Show a => a -> String showInteger d String -> ShowS forall a. [a] -> [a] -> [a] ++String "D"calendarDay ::CalendarDiffDays calendarDay :: CalendarDiffDays calendarDay =Integer -> Integer -> CalendarDiffDays CalendarDiffDays Integer 0Integer 1calendarWeek ::CalendarDiffDays calendarWeek :: CalendarDiffDays calendarWeek =Integer -> Integer -> CalendarDiffDays CalendarDiffDays Integer 0Integer 7calendarMonth ::CalendarDiffDays calendarMonth :: CalendarDiffDays calendarMonth =Integer -> Integer -> CalendarDiffDays CalendarDiffDays Integer 1Integer 0calendarYear ::CalendarDiffDays calendarYear :: CalendarDiffDays calendarYear =Integer -> Integer -> CalendarDiffDays CalendarDiffDays Integer 12Integer 0-- | Scale by a factor. Note that @scaleCalendarDiffDays (-1)@ will not perfectly invert a duration, due to variable month lengths.scaleCalendarDiffDays ::Integer->CalendarDiffDays ->CalendarDiffDays scaleCalendarDiffDays :: Integer -> CalendarDiffDays -> CalendarDiffDays scaleCalendarDiffDays Integer k (CalendarDiffDays Integer m Integer d )=Integer -> Integer -> CalendarDiffDays CalendarDiffDays (Integer k Integer -> Integer -> Integer forall a. Num a => a -> a -> a *Integer m )(Integer k Integer -> Integer -> Integer forall a. Num a => a -> a -> a *Integer d )