Author: larry Date: Fri Apr 13 16:23:17 2007 New Revision: 14373 Modified: doc/trunk/design/syn/S03.pod
Log: Ranges over enums and such also can use *, suggested by Jonathan Lang++ Modified: doc/trunk/design/syn/S03.pod ============================================================================== --- doc/trunk/design/syn/S03.pod (original) +++ doc/trunk/design/syn/S03.pod Fri Apr 13 16:23:17 2007 @@ -14,7 +14,7 @@ Date: 8 Mar 2004 Last Modified: 13 Apr 2007 Number: 3 - Version: 111 + Version: 112 =head1 Overview @@ -749,7 +749,7 @@ These operators compare their operands using numeric, string, or C<eqv> semantics respectively, and depending on the order return one of C<Order::Increase>, C<Order::Same>, or C<Order::Decrease> -(which numerify to -1, 0, or +1). See L</Comparion semantics>. +(which numerify to -1, 0, or +1). See L</Comparison semantics>. =item * @@ -2104,18 +2104,20 @@ 2.1 ~~ 1..2 # false, equivalent to 1 <= 2.1 <= 2 If a C<*> (see the "Whatever" type in S02) occurs on the right side -of a range, it is taken to mean "positive infinity" in whatever space -the range is operating. A C<*> on the left means "negative infinity" -for types that support negative values. (The sign of those infinities -reverses for a negative step.) If the C<*> occurs on one side but -not the other, the type is inferred from the other argument. A star -on both sides will match any value that supports the C<Ordered> role. +of a range, it is taken to mean "positive infinity" in whatever +typespace the range is operating, as inferred from the left operand. +A C<*> on the left means "negative infinity" for types that support +negative values, and the first value in the typespace otherwise as +inferred from the right operand. (For signed infinities the signs +reverse for a negative step.) A star on both sides prevents any type +from being inferred other than the C<Ordered> role. 0..* # 0 .. +Inf 'a'..* # 'a' .. 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzz...' *..0 # -Inf .. 0 *..* # "-Inf .. +Inf", really Ordered 1.2.3..* # Any version higher than 1.2.3. + May..* # May through December Note: infinite lists are constructed lazily. And even though C<*..*> can't be constructed at all, it's still useful as a selector object.