Let's not go in circles -- the primary reason for function* is because
yield is not reserved in JS and is used by web content as a plain
identifier. It is a low-precedence unary prefix operator, so cannot be
contextually reserved by a grammatical restriction as "module" can. It
needs opt-in syntax.
Separately, some on TC39 want a flag on the function, in the head
syntax, to alert readers to the generator. That's a secondary reason,
independent and not as strong in my view.
There's nothing to "get" or "not get" about backward compatbility. It
just "is". :-|
/be
Yuichi Nishiwaki <mailto:yuichi.nishiw...@gmail.com>
August 31, 2013 12:55 PM
I can't get the point, why you need to know if the function is a
generator or not at a glance?
1. Forcing users to mark the function as a generator is only a
duplication. It basically doesn't have any meaning other than
double-checking, and fundamental risk for the unintentional creation
is still not removed.
2. Even if you know the function is a generator in early, you still
need to read the entire source code to get the information about what
the generator yields and when it stops.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
Oliver Hunt <mailto:oli...@apple.com>
August 31, 2013 12:25 PM
On Aug 31, 2013, at 12:15 PM, Yuichi Nishiwaki<yuichi.nishiw...@gmail.com>
wrote:
Hi all, I just found a post that the current generator syntax
(function *) seems have decided in:
https://mail.mozilla.org/pipermail/es-discuss/2011-July/015799.html
According to the post, the biggest reason the star syntax is adopted
for now is that you cannot write empty generators with star-less
functions in a consistent simple way. But the situation has changed,
and in the current spec (rev 17) yield* is now capable of taking any
kind of iterator, so you can make empty generators just like
```js
function * () {
yield * [];
}
```
This looks enough good and simple at least to me. And I wonder if even
now generators still need to be declared with 'star's. What are the
advantages of 'star'ed generators rather than 'star'-lesses? If not
exist, shouldn't it be removed (for the simplicity)?
The reason for the * is substantially (IIRC) to make it possible for an engine
to help prevent developers from unintentionally creating a generator function,
and to make it possible for someone attempting to use a function to identify
immediately
whether it is a generator or a regular function.
--Oliver
Thank you.
--
Yuichi Nishiwaki
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
Yuichi Nishiwaki <mailto:yuichi.nishiw...@gmail.com>
August 31, 2013 12:15 PM
Hi all, I just found a post that the current generator syntax
(function *) seems have decided in:
https://mail.mozilla.org/pipermail/es-discuss/2011-July/015799.html
According to the post, the biggest reason the star syntax is adopted
for now is that you cannot write empty generators with star-less
functions in a consistent simple way. But the situation has changed,
and in the current spec (rev 17) yield* is now capable of taking any
kind of iterator, so you can make empty generators just like
```js
function * () {
yield * [];
}
```
This looks enough good and simple at least to me. And I wonder if even
now generators still need to be declared with 'star's. What are the
advantages of 'star'ed generators rather than 'star'-lesses? If not
exist, shouldn't it be removed (for the simplicity)?
Thank you.
--
Yuichi Nishiwaki
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss