-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Calculation of bank holidays in England and Wales
--   
--   Calculation of bank holidays in England and Wales, using the rules
--   that have been in place since 1978, and including all exceptions to
--   the rules in the years 1995 to 2014.
@package bank-holidays-england
@version 0.1.0.7


-- | Calculation of bank holidays in England and Wales, using the rules
--   that have been in place since 1978, and including all exceptions to
--   the rules in the years 1995 to 2014. I do not know of any exceptions
--   from 1978 until 1995, so the calculations may be correct for those
--   years too. Calculations for future dates are predictions which may be
--   rendered false if exceptions to the rules are announced.
--   
--   There are normally 8 bank holidays in England and Wales:
--   
--   <ul>
--   <li>New Year's Day</li>
--   <li>Good Friday</li>
--   <li>Easter Monday</li>
--   <li>May Day</li>
--   <li>Spring Bank Holiday</li>
--   <li>Summer Bank Holiday</li>
--   <li>Christmas Day</li>
--   <li>Boxing Day</li>
--   </ul>
--   
--   The rules for determining the precise date of each of these in any
--   given year are a little involved, since holidays may be moved to avoid
--   falling on a weekend:
--   
--   <ul>
--   <li>The New Year's Day holiday is the 1st of January, or the following
--   Monday if the 1st is a weekend.</li>
--   <li>Good Friday and Easter Monday are the Friday and Monday either
--   side of Easter Sunday (as calculated by the Gregorian method).</li>
--   <li>May Day is the first Monday in May.</li>
--   <li>The Spring Bank Holiday is the last Monday in May.</li>
--   <li>The Summer Bank Holiday is the last Monday in August.</li>
--   <li>Christmas Day is the 25th of December unless that's a weekend, in
--   which case it's the 27th.</li>
--   <li>Boxing Day is the 26th of December unless that's a weekend, in
--   which case it's the 28th.</li>
--   </ul>
--   
--   Exceptions may be made to these rules on a year-by-year basis.
--   
--   This package is a reasonably efficient (constant-time) implementation
--   of these rules.
module Data.Time.Calendar.BankHoliday.EnglandAndWales

-- | List the bank holidays for the given year, in ascending order. Bank
--   holidays never fall on a weekend.
bankHolidays :: Integer -> [Day]

-- | Returns whether a day is a bank holiday.
isBankHoliday :: Day -> Bool

-- | Count the number of bank holidays between two <a>Day</a>s.
--   
--   If <tt>d0 &lt;= d1</tt> then <tt>countBankHolidays d0 d1</tt> is the
--   number of <a>Day</a>s <tt>d</tt> for which <tt>isBankHoliday d
--   &amp;&amp; d0 &lt;= d &amp;&amp; d &lt; d1</tt>. Note the count
--   includes <tt>d0</tt> but excludes <tt>d1</tt>.
--   
--   Additionally, <tt>countBankHolidays d0 d1 == negate (countBankHolidays
--   d1 d0)</tt> and <tt>countBankHolidays d0 d2 == countBankHolidays d0 d1
--   + countBankHolidays d1 d2</tt>.
countBankHolidays :: Day -> Day -> Integer
