Author: larry
Date: Mon Mar 31 11:15:33 2008
New Revision: 14531

Modified:
   doc/trunk/design/syn/S03.pod

Log:
Some clarifications on Num and Int coercions.
Removed lame joke about truncating rats.


Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod        (original)
+++ doc/trunk/design/syn/S03.pod        Mon Mar 31 11:15:33 2008
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 17 Mar 2008
+  Last Modified: 31 Mar 2008
   Number: 3
-  Version: 133
+  Version: 134
 
 =head1 Overview
 
@@ -40,7 +40,7 @@
     L  Concatenation     ~
     X  Junctive and      &
     X  Junctive or       | ^
-    L  Named unary       rand sleep abs
+    L  Named unary       sleep abs sin
     N  Nonchaining infix but does <=> leg cmp .. ..^ ^.. ^..^
     C  Chaining infix    != == < <= > >= eq ne lt le gt ge ~~ === eqv !eqv
     L  Tight and         &&
@@ -221,7 +221,7 @@
 
 =item *
 
-Function call
+Function call with parens:
 
     a(1)
 
@@ -263,6 +263,14 @@
 its left, so it binds tighter than comma on the left but looser than
 comma on the right--see List prefix precedence below.
 
+=item *
+
+0-ary functions
+
+    self
+    undef
+    rand
+
 =back
 
 =head2 Method postfix precedence
@@ -568,10 +576,11 @@
 
     +$x
 
-Unlike in Perl 5, where C<+> is a no-op, this operator coerces
-to numeric context in Perl 6.  (It coerces only the value, not the
-original variable.)  The narrowest appropriate type of C<Int>, C<Num>,
-or C<Complex> will be returned.  A string containing two integers
+Unlike in Perl 5, where C<+> is a no-op, this operator coerces to
+numeric context in Perl 6.  (It coerces only the value, not the
+original variable.)  For values that are not already considered
+numeric, the narrowest appropriate type of C<Int>, C<Num>, or
+C<Complex> will be returned; however, string containing two integers
 separated by a C</> will be returned as a C<Rat>.  Exponential notation
 and radix notations are recognized.
 
@@ -721,7 +730,6 @@
 from a lazy exception model.)
 
 Use of C<div> on two C<Int> values results in a ratio of the C<Rat> type.
-Integerizing a rat involves truncating its tail.
 
 =item *
 
@@ -941,16 +949,48 @@
 
 =head2 Named unary precedence
 
+Functions of one argument
+
+    int
+    sleep
+    abs
+    sin
+    ...         # see S29 Functions
+
+Note that, unlike in Perl 5, you must use the C<.meth> forms to default
+to C<$_> in Perl 6.
+
+There is no unary C<rand> function in Perl 6, though there is a C<.rand>
+method call and a 0-ary C<rand> term.
+
 =over
 
 =item *
 
-Functions of one argument
+C<< prefix:<int> >>
 
-    rand sleep abs etc.
+Coerces to type C<Int>.  Floor semantics are used for fractional
+values, including strings that appear to express fractional values.
+That is, C<int($x)> must have the same result as C<int(+$x)> in all
+cases.  All implicit conversions to integer use the same semantics.
 
-Note that, unlike in Perl 5, you must use the C<.meth> forms to default
-to C<$_> in Perl 6.
+(Note that, despite the fact that C<int> is a valid native type
+name, this function does not express conversion to that native type.
+Such subtype conversions are done automatically upon assignment to
+a subtyped container, and fail if the container cannot hold the value.)
+
+=item *
+
+C<< prefix:<sleep> >>
+
+Suspends the current thread of execution for the specified number of seconds,
+which may be fractional.
+
+=item *
+
+C<< prefix:<abs> >>
+
+Returns the absolute value of the specified argument.
 
 =back
 

Reply via email to