lib: type signatures
This commit is contained in:
parent
39aed387e9
commit
da8047d286
@ -545,6 +545,7 @@ startofyear day = fromGregorian y 1 1 where (y,_,_) = toGregorian day
|
|||||||
-- 2016-12-31
|
-- 2016-12-31
|
||||||
-- >>> nthdayofyearcontaining 1 1 wed22nd
|
-- >>> nthdayofyearcontaining 1 1 wed22nd
|
||||||
-- 2017-01-01
|
-- 2017-01-01
|
||||||
|
nthdayofyearcontaining :: Month -> MonthDay -> Day -> Day
|
||||||
nthdayofyearcontaining m n d | mmddOfSameYear <= d = mmddOfSameYear
|
nthdayofyearcontaining m n d | mmddOfSameYear <= d = mmddOfSameYear
|
||||||
| otherwise = mmddOfPrevYear
|
| otherwise = mmddOfPrevYear
|
||||||
where mmddOfSameYear = addDays (fromIntegral n-1) $ applyN (m-1) nextmonth s
|
where mmddOfSameYear = addDays (fromIntegral n-1) $ applyN (m-1) nextmonth s
|
||||||
@ -568,6 +569,7 @@ nthdayofyearcontaining m n d | mmddOfSameYear <= d = mmddOfSameYear
|
|||||||
-- 2017-10-23
|
-- 2017-10-23
|
||||||
-- >>> nthdayofmonthcontaining 30 wed22nd
|
-- >>> nthdayofmonthcontaining 30 wed22nd
|
||||||
-- 2017-10-30
|
-- 2017-10-30
|
||||||
|
nthdayofmonthcontaining :: MonthDay -> Day -> Day
|
||||||
nthdayofmonthcontaining n d | nthOfSameMonth <= d = nthOfSameMonth
|
nthdayofmonthcontaining n d | nthOfSameMonth <= d = nthOfSameMonth
|
||||||
| otherwise = nthOfPrevMonth
|
| otherwise = nthOfPrevMonth
|
||||||
where nthOfSameMonth = nthdayofmonth n s
|
where nthOfSameMonth = nthdayofmonth n s
|
||||||
@ -591,6 +593,7 @@ nthdayofmonthcontaining n d | nthOfSameMonth <= d = nthOfSameMonth
|
|||||||
-- 2017-11-16
|
-- 2017-11-16
|
||||||
-- >>> nthdayofweekcontaining 5 wed22nd
|
-- >>> nthdayofweekcontaining 5 wed22nd
|
||||||
-- 2017-11-17
|
-- 2017-11-17
|
||||||
|
nthdayofweekcontaining :: WeekDay -> Day -> Day
|
||||||
nthdayofweekcontaining n d | nthOfSameWeek <= d = nthOfSameWeek
|
nthdayofweekcontaining n d | nthOfSameWeek <= d = nthOfSameWeek
|
||||||
| otherwise = nthOfPrevWeek
|
| otherwise = nthOfPrevWeek
|
||||||
where nthOfSameWeek = addDays (fromIntegral n-1) s
|
where nthOfSameWeek = addDays (fromIntegral n-1) s
|
||||||
@ -614,12 +617,14 @@ nthdayofweekcontaining n d | nthOfSameWeek <= d = nthOfSameWeek
|
|||||||
-- 2017-10-26
|
-- 2017-10-26
|
||||||
-- >>> nthweekdayofmonthcontaining 4 5 wed22nd
|
-- >>> nthweekdayofmonthcontaining 4 5 wed22nd
|
||||||
-- 2017-10-27
|
-- 2017-10-27
|
||||||
|
nthweekdayofmonthcontaining :: Int -> WeekDay -> Day -> Day
|
||||||
nthweekdayofmonthcontaining n wd d | nthWeekdaySameMonth <= d = nthWeekdaySameMonth
|
nthweekdayofmonthcontaining n wd d | nthWeekdaySameMonth <= d = nthWeekdaySameMonth
|
||||||
| otherwise = nthWeekdayPrevMonth
|
| otherwise = nthWeekdayPrevMonth
|
||||||
where nthWeekdaySameMonth = advancetonthweekday n wd $ startofmonth d
|
where nthWeekdaySameMonth = advancetonthweekday n wd $ startofmonth d
|
||||||
nthWeekdayPrevMonth = advancetonthweekday n wd $ prevmonth d
|
nthWeekdayPrevMonth = advancetonthweekday n wd $ prevmonth d
|
||||||
|
|
||||||
-- | Advance to nth weekday wd after given start day s
|
-- | Advance to nth weekday wd after given start day s
|
||||||
|
advancetonthweekday :: Int -> WeekDay -> Day -> Day
|
||||||
advancetonthweekday n wd s = addWeeks (n-1) . firstMatch (>=s) . iterate (addWeeks 1) $ firstweekday s
|
advancetonthweekday n wd s = addWeeks (n-1) . firstMatch (>=s) . iterate (addWeeks 1) $ firstweekday s
|
||||||
where
|
where
|
||||||
addWeeks k = addDays (7 * fromIntegral k)
|
addWeeks k = addDays (7 * fromIntegral k)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user