@@ -98,7 +98,7 @@ getDay = do
99 let !year = toNum yearStr
99 let !year = toNum yearStr
100 _ <- A.char '-'
100 _ <- A.char '-'
101− month <- digits "month"
101+ !month <- digits "month"
102 _ <- A.char '-'
102 _ <- A.char '-'
103 day <- digits "day"
103 day <- digits "day"
@@ -115,7 +115,7 @@ decimal str = toNum str / 10^(B.length str)
116getTimeOfDay :: A.Parser TimeOfDay
116getTimeOfDay :: A.Parser TimeOfDay
117getTimeOfDay = do
117getTimeOfDay = do
118− hour <- digits "hours"
118+ !hour <- digits "hours"
119 _ <- A.char ':'
119 _ <- A.char ':'
120 minute <- digits "minutes"
120 minute <- digits "minutes"
121 _ <- A.char ':'
121 _ <- A.char ':'
@@ -136,9 +136,9 @@ getLocalTimestamp = getUnbounded getLocalTime
137getTimeZone :: A.Parser TimeZone
137getTimeZone :: A.Parser TimeZone
138getTimeZone = do
138getTimeZone = do
139− sign <- A.satisfy (\c -> c == '+' || c == '-')
139+ !sign <- A.satisfy (\c -> c == '+' || c == '-')
140− hours <- digits "timezone"
140+ !hours <- digits "timezone"
141− mins <- (A.char ':' *> digits "timezone minutes") <|> pure 0
141+ !mins <- (A.char ':' *> digits "timezone minutes") <|> pure 0
142 let !absset = 60 * hours + mins
142 let !absset = 60 * hours + mins
143 !offset = if sign == '+' then absset else -absset
143 !offset = if sign == '+' then absset else -absset
144 return $! minutesToTimeZone offset
144 return $! minutesToTimeZone offset
@@ -147,12 +147,12 @@ type TimeZoneHMS = (Int,Int,Int)
148getTimeZoneHMS :: A.Parser TimeZoneHMS
148getTimeZoneHMS :: A.Parser TimeZoneHMS
149getTimeZoneHMS = do
149getTimeZoneHMS = do
150− sign <- A.satisfy (\c -> c == '+' || c == '-')
150+ !sign <- A.satisfy (\c -> c == '+' || c == '-')
151− hours <- digits "timezone"
151+ !hours <- digits "timezone"
152− mins <- (A.char ':' *> digits "timezone minutes") <|> pure 0
152+ !mins <- (A.char ':' *> digits "timezone minutes") <|> pure 0
153− secs <- (A.char ':' *> digits "timezone seconds") <|> pure 0
153+ !secs <- (A.char ':' *> digits "timezone seconds") <|> pure 0
154 if sign == '+'
154 if sign == '+'
155− then return (hours, mins, secs)
155+ then return $! (hours, mins, secs)
156 else return $! (\ !h !m !s -> (h,m,s)) (-hours) (-mins) (-secs)
156 else return $! (\ !h !m !s -> (h,m,s)) (-hours) (-mins) (-secs)
158localToUTCTimeOfDayHMS :: TimeZoneHMS -> TimeOfDay -> (Integer, TimeOfDay)
158localToUTCTimeOfDayHMS :: TimeZoneHMS -> TimeOfDay -> (Integer, TimeOfDay)
@@ -185,10 +185,10 @@ getUTCTime = do
185 _ <- A.char ' '
185 _ <- A.char ' '
186 time <- getTimeOfDay
186 time <- getTimeOfDay
187 zone <- getTimeZoneHMS
187 zone <- getTimeZoneHMS
188− let (!dayDelta,!time') = localToUTCTimeOfDayHMS zone time
188+ let !(dayDelta,time') = localToUTCTimeOfDayHMS zone time
189 let !day' = addDays dayDelta day
189 let !day' = addDays dayDelta day
190 let !time'' = timeOfDayToTime time'
190 let !time'' = timeOfDayToTime time'
191− return (UTCTime day' time'')
191+ return $! UTCTime day' time''
193getUTCTimestamp :: A.Parser UTCTimestamp
193getUTCTimestamp :: A.Parser UTCTimestamp
194getUTCTimestamp = getUnbounded getUTCTime
194getUTCTimestamp = getUnbounded getUTCTime