Time library design proposal

Keean Schupke k.schupke at imperial.ac.uk
Wed Feb 2 10:43:49 EST 2005


Bayley, Alistair wrote:

>>From: Keean Schupke [mailto:k.schupke at imperial.ac.uk] 
>>
>>data Gregorian = Gregorian {
>>    second :: Int,
>>    minute :: Int,
>>    hour :: Int,
>>    dayOfMonth :: Int,
>>    dayOfWeek :: Int,
>>    weekOfYear :: Int,
>>    monthOfYear :: Int,
>>    Year :: Int } -- enumerations may make more sense for 
>>dayOfWeek/monthOfYear
>>    
>>
>
>
>I don't like the redundancy here. dayOfWeek and weekOfYear can (and should)
>be derived from the dayOfMonth+monthOfYear+year. Having to specify them in
>addition to the other fields is a major PITA, and one of the reasons the
>current CalendarTime library is so unsavoury (why do I need to say what day
>of the week it is? pah).
>
>Alistair.
>
For some functions it makes sense, for reverse calculations (Calendar -> 
TAI) it can save
a lot of time to just fill out some fields... I was thinking of cron 
like functionality where you want
to represent a repeat time (like every monday at 8pm)... But this would 
require each field to
have a type like:

data Gregorian = Gregorian {
    second :: [Int],
    minute :: [Int],
    hour :: [Int],
    dayOfMonth :: [Int],
    dayOfWeek :: [Int],
    weekOfYear :: [Int],
    monthOfYear :: [Int],
    year :: [Int] }

anytime = {
    second = [],
    minute = [],
    hour = [],
    dayOfMonth = [],
    dayOfWeek = [],
    weekOfYear = [],
    monthOfYear = [],
    year = [] }

recordMyProgram = anytime { dayOfWeek = [1,3], hour = [21] }

So my program gets recorded every monday and wednesday at 9pm.

	Keean.





More information about the Libraries mailing list