On 07/01/2008, mike clemow <gelfmuse@gmail.com> wrote:
Kassen,

That actually doesn't make sense to me.  2::second has no reference point to when it started or when it ends.  It's just 2 seconds of duration.  So, for me, this:

2::second $ time => time later;

seems so implicit that it's ambiguous. 

I see where you are coming from, but "now" really is a duration already, in a way.

<<<now /minute>>>; is quite legal and will return a float expressing the amount of minutes the VM has been alive. I see "now" and other times as a duration with the start of the VM as it's start.

So; we can divide "now" by a duration and get a float but a float times a duration will always be a "duration" and not a "time", so far, in practice.
 

I would, however, agree that there ought to be a (dare I say) keyword for the time at which the VM started so that you could basically do the same thing that you did in the first line.

vmstart + 2::second => time afterVmStarted;

A keyword for this may not be enough. The following is a attempt to create my own "birth" keyword expressing this. I can't get it smaller then this and I would say this is quite perverse in a way;

 //strongly typed meets strongly timed :¬p
//at least it runs and works....
now - ((now /samp)::samp) => time birth;

I'd say this means casting can make sense but I'm open to ideas.
 



Of course, you could just approximate this functionality by having this line run the moment the vm starts:

now => time vmstart;

Then, you'd be able to the do everything relative to that time.  At least, that's how I would solve it.

Maybe you'll like my attempt above too.... well, I think it works....

Kas.