Author: larry
Date: Thu Feb  1 10:52:27 2007
New Revision: 13559

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

Log:
Keeping exceptions exceptional and lazy to promote parallelism.
Some random C<> cleanup.


Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod        (original)
+++ doc/trunk/design/syn/S03.pod        Thu Feb  1 10:52:27 2007
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 30 Jan 2007
+  Last Modified: 1 Feb 2007
   Number: 3
-  Version: 93
+  Version: 94
 
 =head1 Overview
 
@@ -66,31 +66,31 @@
 
 =item *
 
-Int literal
+C<Int> literal
 
     42
 
 =item *
 
-Num literal
+C<Num> literal
 
     3.14
 
 =item *
 
-Non-interpolating Str literal
+Non-interpolating C<Str> literal
 
     '$100'
 
 =item *
 
-Interpolating Str literal
+Interpolating C<Str> literal
 
     "Answer = $answer\n"
 
 =item *
 
-Generalized Str literal
+Generalized C<Str> literal
 
     q["$100"]
     qq["$answer"]
@@ -352,7 +352,7 @@
 be an approximation.  If the right argument is of an integer type,
 exponentiation is at least as accurate as repeated multiplication on
 the left side's type.  (From which it can be deduced that C<Int**UInt>
-is always exact, since Int supports arbitrary precision.)  If the
+is always exact, since C<Int> supports arbitrary precision.)  If the
 right argument is an integer represented in a non-integer type, the
 accuracy is left to implementation provided by that type; there is
 no requirement to recognize an integer to give it special treatment.
@@ -468,17 +468,30 @@
 
 infix:</>
 
-    $dividend / $divisor
+    $numerator / $denominator
 
-Converts both operands to Num and does division returning Num.
+Converts both operands to C<Num> and does division returning C<Num>.
+If the denominator is zero, returns either C<+Inf>, C<NaN>, or C<-Inf>
+as the numerator is positive, zero, or negative.  (This is construed
+as the best default in light of the operator's possible use within
+hyperoperators and junctions.  If you want it to throw an exception
+on an individual scalar division, you can alwyas check the denominator
+yourself.)
 
 =item *
 
 infix:<div>, generic division
 
-    $dividend div $divisor
+    $numerator div $denominator
 
-Dispatches to the infix:<div> multi most appropriate to the operand types.
+Dispatches to the infix:<div> multi most appropriate to the operand
+types.  Policy on what to do about division by zero is up to the type,
+but for the sake of hyperoperators and junctions those types that
+can represent overflow (or that can contain an unthrown exception)
+should try to do so rather than simply throwing an exception.  (And in
+general, other operators that might fail should also consider their
+use in hyperops and junctions, and whether they can profitably benefit
+from a lazy exception model.)
 
 =item *
 
@@ -486,7 +499,7 @@
 
     %
 
-Always floor semantics using Num or Int.
+Always floor semantics using C<Num> or C<Int>.
 
 =item *
 
@@ -747,7 +760,7 @@
 
     == != < <= > >=
 
-As in Perl 5, converts to Num before comparison.  C<!=> is short for C<!==>.
+As in Perl 5, converts to N>um before comparison.  C<!=> is short for C<!==>.
 
 =item *
 
@@ -755,7 +768,7 @@
 
     eq ne lt le gt ge
 
-As in Perl 5, converts to Str before comparison. C<ne> is short for C<!eq>.
+As in Perl 5, converts to C<Str> before comparison. C<ne> is short for C<!eq>.
 
 =item *
 

Reply via email to