As discussed previously such overloading is pretty bad. If someone creates a 
generator-returning function manually, instead of using a generator function to 
do so, they will start getting unexpected results from your library. You might 
think this is rare but it's actually pretty reasonable---consider e.g. 
`yourLibrary(transform(function* () { ... }))` where `transform` is a 
higher-order function which manually creates a generator based on its argument.

An analogy would be that your and Dean's functions are similar to something like

```js
function getFullName(person) {
  if (person.constructor !== Person) {
    // Do something else, e.g. `return person.toString()`
  }

  return `${person.firstName} ${person.lastName}`;
}
```

That is, now you have prohibited people from using { firstName, lastName } 
object literals, Person subclass instances, Dog instances, etc. That's very 
unfortunate practice. The same goes for generators.

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to