Date classes

Philippe Marschall philippe.marschall at gmail.com
Tue Apr 17 16:43:16 UTC 2007


2007/4/17, Hernan Wilkinson <hernan.wilkinson at gmail.com>:
>
>
>
> >
> > I loaded Aconcagua-mx.1.6 and Chalten-mx.1.3 in Squeak 3.9. The
> > following all give errors:
> >
> > GregorianDay today + 1 day
> > GregorianDateTime now + 1 day
> > GregorianDay today next: 5
> > GregorianYear current + 1 year
> > 5 months
>
>
> > I guess I have to thank you. After hearing what a piece of shit
> > Seaside is because of its lack of documentation it's relieving to see
> > a framework with no class comments at all. A quick browsing through
> > same classes showed also no method comments.
>
> jaja, it seems to me that you did not look good enough.... just look at the
> Test!!! They are all the documentation you need! and more!! real examples,
> live code! not just documentation.... We defenetly use different development
> techniques... Also, remember the paper!
> Links:
> http://www.iam.unibe.ch/~ducasse/Teaching/CoursAnnecy/0506-M1-COO/A%20New%20Object-Oriented%20Model%20of%20the%20Gregorian%20Calendar.pdf
> http://prog2.vub.ac.be/~cderoove/esugtalks/Wilkinson.pdf
>   (ESUG Presentation)

That exists for Seaside too (plus blogs, screen casts, real
applications using it, ...), didn't count for nothing.

> 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.

> 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

> 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. And there is still the question where year comes from
(please no shared pool).

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