Mark's reply helps, but I want to add that we are *not* making
gratuitous differences between strict and non-strict mode. Modes are
bad, one is more than enough. Further speciation in later editions just
makes more. Just say no, write that * after function, and get on with
life :-).
/be
Yuichi Nishiwaki <mailto:[email protected]>
August 31, 2013 1:14 PM
OK, right. I understand my first propose does not work. :-|
So one more question is how about making '*' optional in strict mode?
(Should I separate the topic to another?)
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
Brendan Eich <mailto:[email protected]>
August 31, 2013 12:58 PM
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
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
Yuichi Nishiwaki <mailto:[email protected]>
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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
Oliver Hunt <mailto:[email protected]>
August 31, 2013 12:25 PM
On Aug 31, 2013, at 12:15 PM, Yuichi Nishiwaki<[email protected]>
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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
Yuichi Nishiwaki <mailto:[email protected]>
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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss