úÎ1§._"      ! non-portable experimental!Mihaly Barasz <mihaly@barasz.com>None&Type class that defines access to the "time" part of a type. BYou only need to define one of the two methods, whichever is more  natural. &Type class that defines access to the "date" part of a type. -You can implement either of the two methods. BType class to provide correct roll-over behavior for time lenses. Used exactly as   , but for values that have only "time"  and no "date" part. ;If the time rolls-over more than 24 hours the day carry is  discarded. Ex.: let t = TimeOfDay 1 12 3t01:12:03t & flexT.seconds +~ (-7200)23:12:03BType class to provide correct roll-over behavior for date lenses. Used exactly as   , but for values that have only "date"  and no "time" part. GType class to provide correct roll-over behavior for date-time lenses. +See examples in the general overview part. View " as an #$ day number in the Julian calendar. )See the description at the definition of ". View "8 as a triple of (year,month,day) in Gregorian calendar. )See the description at the definition of $ / %. View &6 as a fractional day in the modified Julian calendar. See the description of ' and (. Lens into the year value of a . 'Warning: this is not a proper lens for & and ): A it only obeys the lens laws if used with valid values. When the A year value in a date is modified the month and day values might A also change. This happens when the original date was a February ( 29th and we change to a non-leap year. Lens into the month value of a . 'Warning: this is not a proper lens for & and ): D it only obeys the lens laws if used with valid values. The updated D month value will be clipped to a valid month value. Also note that A the day value might also be modified (clipped to a valid day in  that month). Lens into the day value of a . 'Warning: this is not a proper lens for & and ): D it only obeys the lens laws if used with valid values. The updated = day value will be clipped to a valid day value in the given  year-month. Lens into the hour value of a . 'Warning: this is not a proper lens for ): it only obeys the & lens laws if used with valid values.  Lens into the minute value of a . 'Warning: this is not a proper lens for ): it only obeys the & lens laws if used with valid values.  Lens into the second value of a . 'Warning: this is not a proper lens for ): it only obeys the & lens laws if used with valid values. Trivial isomorphism between ) and &. We view &/ values as being in the UTC time zone. This is  ! applied to *. !Isomorphism between ) and & for the given  +. 6 ,-. !/0123456789:;<=>?"  !"  ! '   ,-. !/0123456789:;<=>?@      !"#$%&!'(!')!*+!",!-.!/0!12!13456789:;<=>?@ABCDEFGHlens-datetime-0.2Data.Time.LensTimeabletime timeAsDiffDateabledate _dateFlex FlexibleTimeflexT FlexibleDateflexDFlexibleDateTimeflexDTFlexTime FlexDateTimeflexDateflexTODFlexDateflexYear flexMonthflexDay julianDay gregorianDatejulianDTyearsmonthsdayshoursminutesseconds utcAsLocalutcInTZ time-1.4.0.1Data.Time.Calendar.DaysDay integer-gmpGHC.Integer.TypeIntegerData.Time.Calendar.Gregorian fromGregorian toGregorianData.Time.LocalTime.LocalTime LocalTimeModifiedJulianDayData.Time.LocalTime.TimeOfDaytimeOfDayToDayFractionData.Time.Clock.UTCUTCTimeData.Time.LocalTime.TimeZoneutcTimeZoneflexDateTriplegregorianUnflexdiffTOD$fTimeableFlexTime$fTimeableFlexDateTime$fTimeableTimeOfDay$fTimeableLocalTime$fTimeableUTCTime$fDateableFlexDateTime$fDateableFlexDate $fDateableDay$fDateableLocalTime$fDateableUTCTime$fFlexibleTimeTimeOfDay$fFlexibleDateDay$fFlexibleDateTimeUTCTime$fFlexibleDateTimeLocalTime$fField3FlexDateFlexDateIntInt$fField2FlexDateFlexDateIntInt&$fField1FlexDateFlexDateIntegerInteger