-rfc1123DateAndTime ∷ Parser ZonedTime
-rfc1123DateAndTime = dateTime
-
-dateTime ∷ Parser ZonedTime
-dateTime = do weekDay ← optionMaybe $
- do w ← shortWeekDayNameP
- _ ← string ", "
- return w
- gregDay ← date
- case weekDay of
- Nothing
- → return ()
- Just givenWD
- → assertWeekDayIsGood givenWD gregDay
- (tod, timeZone) ← rfc822Time
- let lt = LocalTime gregDay tod
- zt = ZonedTime lt timeZone
- return zt
+instance Default (Parser (Tagged RFC1123 ZonedTime)) where
+ def = do weekDay ← optionMaybe $
+ do w ← shortWeekDayNameP
+ string ", " *> pure w
+ gregDay ← date
+ case weekDay of
+ Nothing
+ → return ()
+ Just givenWD
+ → assertWeekDayIsGood givenWD gregDay
+ tod ← def
+ tz ← char ' ' *> def
+ let lt = LocalTime gregDay <$> tod
+ zt = ZonedTime <$> lt ⊛ tz
+ pure $ retag' zt
+ where
+ retag' ∷ Tagged RFC822 α → Tagged τ α
+ retag' = retag