Author: lwall
Date: 2010-04-20 02:23:07 +0200 (Tue, 20 Apr 2010)
New Revision: 30412

[S02] define the term 'now'
define math on instants and durations

Modified: docs/Perl6/Spec/S02-bits.pod
--- docs/Perl6/Spec/S02-bits.pod        2010-04-19 23:31:02 UTC (rev 30411)
+++ docs/Perl6/Spec/S02-bits.pod        2010-04-20 00:23:07 UTC (rev 30412)
@@ -13,8 +13,8 @@
     Created: 10 Aug 2004
-    Last Modified: 10 Apr 2010
-    Version: 213
+    Last Modified: 19 Apr 2010
+    Version: 214
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -1291,7 +1291,7 @@
 C<Duration> values are still just atomic time without any cultural
 deformations; in particular, the C<Duration> formed of by subtracting
 C<Instant::Epoch::POSIX> from the current instant will contain more
-seconds than the current POSIX time due to POSIX's abysmal ignorance
+seconds than the current POSIX C<time()> due to POSIX's abysmal ignorance
 of leap seconds.  This is not the fault of the universe, which is
 not fooled (neglecting relativistic considerations).  C<Instant>s and
 C<Duration>s are always linear atomic seconds.  Systems which cannot
@@ -1314,6 +1314,30 @@
 Or whatever.  C<Instant> is opaque, so we can swap implementations
 in and out without user-visible consequences.
+The term C<now> returns the current time as an C<Instant>.  As with the
+C<rand> and C<self> terms, it is not a function, so don't put parens after it.
+It also never looks for arguments, so the next token should be an operator
+or terminator.
+    now + 300   # the instant five minutes from now
+Basic math operations are defined for instants and durations such
+that the sum of an instant and a duration is always an instant,
+while the difference of two instants is always a duration.  Math on
+instants may only be done with durations (or numbers that will
+be taken as durations, as above); you may not add two instants.
+    $instant + $instant      # WRONG
+    $instant - $instant      # ok, returns a duration
+    $instant + $duration     # ok, returnas an instant
+Durations allow additive operations with other durations, and allow
+any numeric operation with a number as the other argument:
+    $duration * $duration    # WRONG, durations aren't geometric
+    $duration * 2            # ok, a duration twice as long
+    2 * $duration            # same
 These types do (at least) the following roles:
     Class       Roles

Reply via email to