Proposal: for-of-withas a way to provide a value to the generator
Isiah Meadows
isiahmeadows at gmail.com
Tue Aug 22 06:40:23 UTC 2017
To be honest, I'm not too sold on either of these:
1. The `with <expr>` reads like an expression evaluated *only once*.
2. The `continue with <expr>` does not provide a way to send a value on the
first `next` call.
One idea is to use a glorified reducer, like this (simplified):
```js
function pipe(gen, start, func) {
var iter = gen[Symbol.iterator]()
var current = iter.next(start)
while (!current.done) {
start = func(current.value)
current = iter.next(start)
}
return current.value
}
```
But even that has its limits (inability to recover from errors, for
example), and it's a pretty inelegant solution to this IMHO.
In general, if you find yourself using iterators like that, `for ... of` is
quite possibly the most way to use them. Think of them as sync send/receive
channels, where you send the argument, block during processing, and receive
through the return value. Here's how you should be using them, if you must:
```js
var fibs = fibonacci()
var result = fibs.next(0)
while (!result.done) {
console.log(value)
result = fibs.next(8)
}
```
On Mon, Aug 21, 2017, 22:04 jong chan moe <jong at chan.moe> wrote:
> I think it would be natural to use it with the `continue` statement.
>
> ```js
> for (let value of fibonacci()) {
> console.log(value);
> continue with value == 8;
> }
> ```
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170822/685e5745/attachment.html>
More information about the es-discuss
mailing list