module Chronos.Calendar ( -- * Enumerations months , weekdays -- * Pattern Matching , month , dayOfWeek -- * Days of Week , sunday , monday , tuesday , wednesday , thursday , friday , saturday -- * Months , january , february , march , april , may , june , july , august , september , october , november , december ) where import Chronos.Types import qualified Data.Vector as Vector month :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> Month -> a month a b c d e f g h i j k l = let v = Vector.fromList [a,b,c,d,e,f,g,h,i,j,k,l] in \(Month ix) -> Vector.unsafeIndex v (fromIntegral ix) dayOfWeek :: a -> a -> a -> a -> a -> a -> a -> DayOfWeek -> a dayOfWeek a b c d e f g = let v = Vector.fromList [a,b,c,d,e,f,g] in \(DayOfWeek ix) -> Vector.unsafeIndex v (fromIntegral ix) months :: [Month] months = map Month [0..11] weekdays :: [DayOfWeek] weekdays = map DayOfWeek [0..6] january :: Month january = Month 0 february :: Month february = Month 1 march :: Month march = Month 2 april :: Month april = Month 3 may :: Month may = Month 4 june :: Month june = Month 5 july :: Month july = Month 6 august :: Month august = Month 7 september :: Month september = Month 8 october :: Month october = Month 9 november :: Month november = Month 10 december :: Month december = Month 11 sunday :: DayOfWeek sunday = DayOfWeek 0 monday :: DayOfWeek monday = DayOfWeek 1 tuesday :: DayOfWeek tuesday = DayOfWeek 2 wednesday :: DayOfWeek wednesday = DayOfWeek 3 thursday :: DayOfWeek thursday = DayOfWeek 4 friday :: DayOfWeek friday = DayOfWeek 5 saturday :: DayOfWeek saturday = DayOfWeek 6