-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add collect method #5
Comments
I can update the Readme to make it more clear that the return values are Iterators. I'm not sure I see the value of collect() isn't iter.collect(fn) equivalent to fn(iter)? |
It is, but if we're dealing with several chained methods with line breaks,
vs
|
The method could also attempt to construct the callback to be used with
|
I don't think all current and future uses of Species will accept that call signature |
Are there any examples in the wild that use a similarly named method? |
@leebyron No they won't. Neither will all functions accept the call signature either. It's up to the developer/ static type checker to know when to use them. |
@RangerMauve I came across the name in these meeting notes: https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-11/nov-19.md#58-mapprototypemap-and-mapprototypefilter-spec--set My suggested implementation is different, but the essence is the same: a convenient API to put iterator results back into a collection after they have been transformed. |
I'd like to keep this proposal limited to just those higher-order operations on Iterators themselves to keep a well defined scope for an eventual proposal. I was present for that particular conversation and remember the controversy around a collect method and introducing a collection prototype. The consensus there was to start with an Iterator prototype proposal, which inspired work on this. If work begins on some kind of shared collection prototype, then perhaps that would be the right opportunity to define a protocol for creating collections from Iterators. Right now Symbol.species might not be the complete solution. |
@leebyron How about a more general purpose infix method such as D3's class Iterator {
call(callback, ...args) {
return callback(this, ...args);
}
} |
Consider this snippet in the readme which incorrectly suggests the return value of
flatten
is an array.Adding the method
collect
:Would allow:
The text was updated successfully, but these errors were encountered: