Author: larry
Date: Tue Jan  1 17:01:32 2008
New Revision: 14477

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

Log:
Clarification of off-the-end semantics of KeySet and KeyBag requested by 
Limbic~Region++.


Modified: doc/trunk/design/syn/S02.pod
==============================================================================
--- doc/trunk/design/syn/S02.pod        (original)
+++ doc/trunk/design/syn/S02.pod        Tue Jan  1 17:01:32 2008
@@ -14,7 +14,7 @@
   Date: 10 Aug 2004
   Last Modified: 1 Jan 2008
   Number: 2
-  Version: 122
+  Version: 123
 
 This document summarizes Apocalypse 2, which covers small-scale
 lexical items and typological issues.  (These Synopses also contain
@@ -896,7 +896,9 @@
 If you use the C<Hash> interface and increment an element of a
 C<KeySet> its value becomes true (creating the element if it doesn't
 exist already).  If you decrement the element it becomes false and
-is automatically deleted.  When not used as a C<Hash> (that is,
+is automatically deleted.  Decrementing a non-existing value results
+in a C<False> value.  Incrementing an existing value results in C<True>.
+When not used as a C<Hash> (that is,
 when used as an C<Array> or list or C<Set> object) a C<KeySet>
 behaves as a C<Set> of its keys.  (Since the only possible value of
 a C<KeySet> is the C<True> value, it need not be represented in
@@ -906,7 +908,8 @@
 use the C<Hash> interface and increment an element of a C<KeyBag>
 its value is increased by one (creating the element if it doesn't exist
 already).  If you decrement the element the value is decreased by one;
-if the value goes to 0 the element is automatically deleted.  When not
+if the value goes to 0 the element is automatically deleted.  An attempt
+to decrement a non-existing value results in a C<Failure> value.  When not
 used as a C<Hash> (that is, when used as an C<Array> or list or C<Bag>
 object) a C<KeyBag> behaves as a C<Bag> of its keys, with each key
 replicated the number of times specified by its corresponding value.

Reply via email to