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.