Please vote on std.datetime

Dmitry Olshansky dmitry.olsh at gmail.com
Fri Dec 10 13:00:22 PST 2010


On 10.12.2010 23:42, Steven Schveighoffer wrote:
> On Fri, 10 Dec 2010 15:21:38 -0500, Jonathan M Davis 
> <jmdavisProg at gmx.com> wrote:
>
>>
>> Would it be better if I changed the IRange functions so that rather than
>> returning a delegate, they took an interval and returned the range? 
>> So, rather
>> than
>>
>> auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27));
>> auto func = IRange.everyDayOfWeek!Date(DayOfWeek.fri);
>> auto range = interval.fwdRange(func);
>>
>>
>> you'd get something like
>>
>> auto interval = Interval!Date(Date(2010, 9, 2), Date(2010, 9, 27));
>> auto range = IRange.everyDayOfWeek!Date(interval, DayOfWeek.fri);
>>
>> Then you wouldn't have to give the IRange function Direction.fwd or
>> Direction.bwd (well, just Direction.bwd, since fwd is the default) 
>> then pass
>> that it to fwdRange() or bwdRange() and have to worry about whether 
>> you screwed
>> up and mismatched the directions. It would then be caught at compile 
>> time rather
>> than runtime.
>>
>> fwdRange() and bwdRange() would stay the same, but you wouldn't have 
>> to call the
>> directly unless you were writing your own delegate.
>>
>> Does that seem like a big improvement to you? After thinking of about 
>> the
>> problem further and coming up with that change, I'm definitely 
>> considering making
>> it.

As potential user, of course, I would like this improvement, I sure 
others will too.

>
> When I looked at the code, I didn't pay much attention to the range 
> stuff.

I have an impression many readers didn't managed to get there with a 
fresh mind :)

>
> But you really need to incorporate IFTI here.  It would be much nicer 
> if you did:
>
> auto ival = interval(Date(2010, 9, 2), Date(2010, 9, 27);
> auto range = everyDayOfWeek(ival, DayOfWeek.fri);

Yes, that's even better, and, in fact, simple.

>
> At least that's a start, we should be able to build more wrappers to 
> reduce the verbosity:.
>
> auto range = everyDayOfWeek(Date(2010, 9, 2), Date(2010, 9, 27), 
> DayOfWeek.fri);
>
> Some way to use slice syntax might be nice.  perhaps:
>
> auto range = Date["9/2/2010".."9/27/2010"].every(DayOfWeek.fri);
>
> maybe that last one is just a pipe dream ;)

I like that dream,  maybe start sort of contest on the most convenient 
and terse notations ?
>
> -Steve


-- 
Dmitry Olshansky



More information about the Digitalmars-d mailing list