Date classes

Philippe Marschall philippe.marschall at gmail.com
Tue Apr 17 19:55:03 UTC 2007


2007/4/17, Hernan Wilkinson <hernan.wilkinson at gmail.com>:
>
> > > About the code you tried:
> > > 1) GregorianDay today + 1 day  -> It will not work becuase a date is not
> > > polymorphic with numbers.
> >
> > Why? This works fine with Chronos. I find it quite handy to compute
> > the difference between two points in time by sending #-. Or being able
> > to add a duration to a timepoint by sending #+. Yeah the type
> > signatures are different than for standard arithmetic but still.
>
> I may sound repetitive, but everything is explained in the paper.
> Because of the metaphor we used to create de model (points in a line, the
> time-line) the messages #next:, #distanceTo:, etc. are better.
>
> > > You have to do: "GregorianDate today next" or
> > > "GregorianDate today next: 1 * day" Remember the *, that allows you to
> > > create measures easily
> > >
> > > 2) GregorianDateTime now + 1 day ---> Same as 1)
> > >
> > > 3) GregorianDay today next: 5 --> It will not work because 5 is not a
> > > measure of time, it is just a number. Try
> > > "GregorianDay today next: 5 * day"  5 * day is a measure of time
> >
> > Maybe then the suggested type should be aMeasure and not aNumberOfDays
>
> Maybe... or maybe it should be aMeasureOfTime... I think that sounds better.
>
> > > 4) GregorianYear current + 1 year --> Same as 1) but using a measure
> > > expressed in year, for example "2 * year"
> > > 5) 5 months --> Measure are created in many ways. We decided not to
> clutter
> > > the number protocol with each unit you could have... because measures
> are
> > > arithmetic representations of a number times its unit, the right way to
> > > create them is using the arithmetic operator * (See our paper about
> > > Aconcagua. Link:
> >
> > All good and fine, however the code you posted in this thread suggests
> > differently.
>
> I don't understand what you mean...

You said:
> 5) Chalten is based on a arithmetic model that allows you to represent time measurements easily (like 3 days, 5 months, etc)

So I assumed you meant we could write
5 months
just the same way we could write
100 dollars
like the examples in the paper show.

> > And there is still the question where year comes from
> > (please no shared pool).
>
> I did not see that question, but the answer is No.  The variable "year" is
> global. The same as month, day, January, February, Monday, etc. Maybe you
> will not like it,

Global state sucks, no matter how well intended. I haven't tested it
but I wouldn't be surprised if it causes problems with Monticello.

> but I think that the time domain is so important in
> writing software as the arithmetic domain,

I think time sucks as a domain. Days that don't have 24 hours, minutes
that don't have 60 seconds, years that don't have 365 days, different
calendars, timezones, points in time with timezones and without
timezones, timezones with more than two DST changes, different week
start days, .... For every rule there's an exception and these can
change at basically any time. Seriously, how much worse can it get?

> so if numbers are global (1, 2,
> 3, etc) why not the time objects? They are well know entities of the real
> life....

Numbers are literals not global variables.

Cheers
Philippe

> Bye,
> Hernan.
>
>
> > Cheers
> > Philippe
> >
> > >
> http://portal.acm.org/citation.cfm?id=1094964&coll=ACM&dl=ACM&CFID=20205775&CFTOKEN=19800555
> > > )
> > >
> > > Hope this help.
> > > Hernan.
> > >
> > > > Cheers
> > > > Philippe
> > > >
> > > > > > > These objects are
> > > > > > > polymorphic with numbers respect to the arithmetic messages such
> as
> > > +,
> > > > > -, *,
> > > > > > > etc., that means that you can use them in arithmetic formulas
> > > > > >
> > > > > > That's true to a certain extent in Chronos for example you can:
> > > > > > Timepoint now - (CalendarDuration months: 1)
> > > > > > (CalendarDuration months: 1) * 5
> > > > > > but you can't:
> > > > > > 5 * (CalendarDuration months: 1)
> > > > >
> > > > > Ok, but it is not only the functionality what it is important for
> us...
> > > for
> > > > > us it is also important the way you "write" these things... for
> example,
> > > > > with Chalten/Aconcagua you can write:
> > > > >
> > > > > 5 * month ---> Equivalent to 5 * (CalendarDuration months: 1)
> > > > > 5 * meter / (second * second) --> A measure of acceleration if you
> > > create
> > > > > meter as a unit using Aconcagua
> > > > > 1/10 * year --> Represents an interest rate of 10% yearly.
> > > > >
> > > > > As you can see, time measure are not only related only to the time
> > > domain
> > > > > but used in other domains... that is way for us it is important to
> > > support
> > > > > this type of behavior and in a DSL way...
> > > > >
> > > > > Bye,
> > > > > Hernan.
> > > > >
> > > > > > > 5) And of course, I like Chalten's model more that Chronos :-).
> For
> > > me
> > > > > it is
> > > > > > > easier to use, but this is just a matter of taste...
> > > > > > >
> > > > > > > There is a paper we wrote 2 years ago about the problems that
> the
> > > > > Smalltalk
> > > > > > > date classes have and the advantages of having a better model.
> If
> > > you
> > > > > are
> > > > > > > interested on having better date and time classes, I recommend
> you
> > > to
> > > > > read
> > > > > > > the paper... you may not like it, but at least you will see
> other
> > > people
> > > > > > > ideas...
> > > > > > > We use that model (Chalten) in a production system and we
> believe it
> > > > > allowed
> > > > > > > us to avoid many common mistakes related to financial
> systems....
> > > but
> > > > > hey,
> > > > > > > that's just a feeling, nothing I can prove formally.
> > > > > > >
> > > > > > > I hope you can do something useful.
> > > > > > > Bye,
> > > > > >
> > > > > > Chronos is a bit ugly in Squeak because Squeak does not support
> > > > > > namespaces which means that classes that model the same concept as
> > > > > > Squeak Chronology classes have different names (unless you mess
> with
> > > > > > shared pools). Also loading it is a bit of a pain with Monticello
> > > > > > (this is the fault of Monticello and not Chronos).
> > > > > >
> > > > > > Cheers
> > > > > > Philippe
> > > > > >
> > > > > > > Hernan.
> > > > > > >
> > > > > > >
> > > > > > > On 4/16/07, J J <azreal1977 at hotmail.com > wrote:
> > > > > > > > I have looked at Cronos but it is really huge, and the classes
> > > that
> > > > > come
> > > > > > > > with the image are already very close.  I will have to look at
> > > > > Chalten,
> > > > > > > but
> > > > > > > > what is wrong with a few upgrades to the classes that come
> with
> > > > > Squeak?
> > > > > > > >
> > > > > > > > >From: "Hernan Wilkinson" < hernan.wilkinson at gmail.com>
> > > > > > > > >Reply-To: The general-purpose Squeak developers
> > > > > > > > >list< squeak-dev at lists.squeakfoundation.org
> >
> > > > > > > > >To: "The general-purpose Squeak developers
> > > > > > > > >list"< squeak-dev at lists.squeakfoundation.org
> >
> > > > > > > > >Subject: Re: Date classes
> > > > > > > > >Date: Mon, 16 Apr 2007 14:28:09 -0300
> > > > > > > > >
> > > > > > > > >Before doing something with Date, I recommend you to take a
> look
> > > at
> > > > > > > > >"Chalten" or "Cronos". Chalten is in SqueakSource.... I think
> > > Cronos
> > > > > too.
> > > > > > > > >
> > > > > > > > >Hernan.
> > > > > > > > >
> > > > > > > > >On 4/16/07, J J < azreal1977 at hotmail.com> wrote:
> > > > > > > > >>
> > > > > > > > >>Hi all,
> > > > > > > > >>
> > > > > > > > >>I am doing some stuff with dates and I noticed the date
> classes
> > > that
> > > > > > > come
> > > > > > > > >>with the default Squeak image are very nice and very close
> to
> > > having
> > > > > > > > >>everything I would want.  But there are a few
> inconsistencies
> > > here
> > > > > and
> > > > > > > > >>there, and things missing that would make things easier.
> > > > > > > > >>
> > > > > > > > >>So what is the procedure to updating this?  I think it's
> part of
> > > the
> > > > > > > core
> > > > > > > > >>system so I probably can't just do a monicello package
> update
> > > > > > > > >>somewhere?  Do
> > > > > > > > >>I have to do it through mantis?
> > > > > > > > >>
> > > > > > > > >>Thanks,
> > > > > > > > >>Jason
> > > > > > > > >>
> > > > > > > >
> > > > > > >
> > > > >
> > >
> >>_________________________________________________________________
> > > > > > > > >>Download Messenger. Join the i'm Initiative. Help make a
> > > difference
> > > > > > > today.
> > > > > > > >
> > > > > > >
> > > > >
> > >
> >>http://im.live.com/messenger/im/home/?source=TAGHM_APR07
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > >
> > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > >
> > >
> _________________________________________________________________
> > > > > > > > Get a FREE Web site, company branded e-mail and more from
> > > Microsoft
> > > > > Office
> > > > > > > > Live!
> > > > > > >
> > > > >
> > >
> http://clk.atdmt.com/MRT/go/mcrssaub0050001411mrt/direct/01/
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> >
> >
>
>
>
>
>



More information about the Squeak-dev mailing list