Author: lwall
Date: 2010-02-02 18:51:25 +0100 (Tue, 02 Feb 2010)
New Revision: 29618
Modified:
docs/Perl6/Spec/S07-iterators.pod
Log:
[S07] pick slightly less misleading names for iteration primitives
stop using "item" to mean contradictory things
remove confusing discussion of outer flat/slice context; these methods don't
care because that's why there are different method names for get vs getobj
Modified: docs/Perl6/Spec/S07-iterators.pod
===================================================================
--- docs/Perl6/Spec/S07-iterators.pod 2010-02-02 17:32:50 UTC (rev 29617)
+++ docs/Perl6/Spec/S07-iterators.pod 2010-02-02 17:51:25 UTC (rev 29618)
@@ -14,8 +14,8 @@
Created: 27 Nov 2008
- Last Modified: 29 Jan 2010
- Version: 9
+ Last Modified: 2 Feb 2010
+ Version: 10
=head1 Laziness and Eagerness
@@ -180,62 +180,57 @@
itself; Perl does not distinguish the two concepts. Any type
that supports the C<List> role is an iterator.
-This is a minimal API that should allow custom iterator
-implementations, but this spec should be expanded in the future to
-provide additional API for batch-aware iterators.
-
The methods in this role are:
=head2 method get {...}
-Returns the next item for that iteration. The grouping of elements
-returned in each iteration is visible if this iterator is being used
-to build a slice. While building a list, the items will be flattened.
+Used to iterator over a flat list (the context supplied by a slurpy binding).
+Returns the next element from the iterator after flattening any leading parcel.
-When it runs out of items, it will fail with the C<EMPTY> exception.
+When it runs out of elements, it will fail with the C<EMPTY> exception.
As with most failures, it is generally returned without throwing it,
unless the calling lexical scope requests it to be thrown via "use fatal".
No list should ever contain the C<EMPTY> exception, since iterational
control flow should always terminate when that value is returned.
-This method provides list context to the iterator.
+=head2 method batch ($max?) {...}
-=head2 method getsome ($max?) {...}
+Used to iterate over a flat list when you wish to return an arbitrary
+number of elements at a time. The returned set of elements is guaranteed
+not to contain any C<Parcel> objects, since any such C<Parcel> will
+be flattened before returning its elements.
-Returns a batch of items in some appropriate C<Positional> type that
+Returns the batch of elements in some appropriate C<Positional> type that
numerifies to the exact number of items returned. (The type may also
be C<Iterable> in its turn.) Also returns C<EMPTY> if no arguments
are available; the C<EMPTY> exception should return 0 when numerified
-to facilitate numeric end testing if that is desired.
+to facilitate numeric end testing if that is desired. If C<$max> is
+not supplied, the iterator may choose a suitable batch size.
This method provides list context to the iterator.
-=head2 method getitem {...}
+=head2 method getobj {...}
-Returns the next item for that iteration. The grouping of elements
-returned in each iteration is visible if this iterator is being used
-to build a slice. While building a list, the items will be flattened.
+Returns the next parcel or other object from the iterator without
+any flattening. It is used both for binding to positional parameters
+in item context as well as variadically retrieving slice elements in
+slice context.
-When it runs out of items, it will fail with the C<EMPTY> exception.
+When it runs out of objects, it will fail with the C<EMPTY> exception.
As with most failures, it is generally returned without throwing it,
unless the calling lexical scope requests it to be thrown via "use fatal".
No list should ever contain the C<EMPTY> exception, since iterational
control flow should always terminate when that value is returned.
-This method provides item context to the iterator, which is also
-used as slice context in the variadic region.
+=head2 method batchobj ($max?) {...}
-=head2 method getsomeitems ($max?) {...}
-
-Returns a batch of items in some appropriate C<Positional> type that
+Returns a batch of parcels/objects in some appropriate C<Positional> type that
numerifies to the exact number of items returned. (The type may also
be C<Iterable> in its turn.) Also returns C<EMPTY> if no arguments
are available; the C<EMPTY> exception should return 0 when numerified
-to facilitate numeric end testing if that is desired.
+to facilitate numeric end testing if that is desired. If C<$max> is
+not supplied, the iterator may choose a suitable batch size.
-This method provides item context to the iterator, which is also
-used as slice context in the variadic region.
-
=head1 The List::PushBack Role
This role defines an iterator that knows how to receive values back to