2007/4/17, Hernan Wilkinson hernan.wilkinson@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%20... 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:
- 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
GregorianDateTime now + 1 day ---> Same as 1)
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
- 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&CF... )
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.
- 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@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@gmail.com> >Reply-To: The general-purpose Squeak developers >list< squeak-dev@lists.squeakfoundation.org > >To: "The general-purpose Squeak developers >list"< squeak-dev@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@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/